我目前正在做一个小项目,在那里我需要编写一个GET处理程序。我正在使用端点文档中提供的Echo示例。
我有我的资源容器:
GET_EMAIL_RESOURCE = endpoints.ResourceContainer(
message_types.VoidMessage,
i = messages.IntegerField(1, default = 1)
)我有我的经纪人:
@endpoints.method(
GET_EMAIL_RESOURCE,
EchoResponse,
path='echo/getEmails/{i}',
http_method='GET',
name='echo_get_emails'
)
def echo_get_emails(self, request):
if (request.i == 1):
out = "default"
else:
out = "a"*request.i
return EchoResponse(content=out)为了获取这个,我使用了curl:
curl --request GET --header "Content-Type: application/json" http://localhost:8080/_ah/api/echo/v1/echo/getEmails/3现在,这很好,并返回您期望的内容,但是如果我需要将更多信息编码到我的URL中,如:
getEmails/value1=someValue&value2=someOtherValue我不知道如何做到这一点,也无法在文档中找到解释或示例。
任何帮助都将不胜感激。
编辑1:
我的代码现在看起来是这样的:
# main.py
GET_EMAIL_RESOURCE = endpoints.ResourceContainer(
message_types.VoidMessage,
i = messages.IntegerField(1, default = 1)
)
@endpoints.method(
GET_EMAIL_RESOURCE,
EchoResponse,
path='echo/getEmails',
http_method='GET',
name='echo_get_emails'
)
def echo_get_emails(self, request):
out = str(request.trailingDigits) + " : " +str(request.leadingDigits)
return EchoResponse(content = out)在我的openapi.json中,我有:
"/echo/v1/echo/getEmails" : {
"get": {
"operationId": "EchoApi_getEmails",
"parameters" : [
{
"name": "trailingDigits",
"in": "query",
"description": "Trailing digits",
"required": true,
"type": "string"
},
{
"name": "leadingDigits",
"in": "query",
"description": "Leading digits",
"required": true,
"type": "string"
}
]
}
}然而,当我运行请求curl --请求获取--标题“Content: application/json”ah/api/echo/v1/echo/getEmails?trailingDigits=2&leadingDigits=2时
我得到了trailingDigits的内容,但是leadingDigits的默认内容
发布于 2018-04-11 17:36:29
ResourceContainer中没有在path值中使用的任何字段都应该成为查询参数。
发布于 2018-04-12 10:50:08
为了修改参数,您需要为所需的路径配置openapi.json文件。下面是一个例子:
"/echo/v1/echo/test": {
"get": {
"operationId": "test",
"parameters": [
{
"name": "paramOne",
"in": "query",
"description": "First parameter test",
"required": true,
"type": "string",
},
{
"name": "paramTwo",
"in": "query",
"description": "Second parameter test",
"required": true,
"type": "string",
}
]这里是一些有用的文档。
编辑1:
一旦编辑了openapi.json文件中的params,就需要修改Python代码以使用这些新的params。
在这种情况下,您需要调整ResourceContainer以接受第二个参数。
下面是一个例子:
YOUR_RESOURCE_CONTAINER = endpoints.ResourceContainer(
message_types.VoidMessage,
parameter1=messages.IntegerField(1, default=1),
parameter2=messages.IntegerField(2, default=2))记住一件事:当使用卷发时,记得在url中添加"“。不使用它可能会导致呼叫失灵。
发布于 2018-06-04 07:57:02
谷歌论坛的这个回答为我解决了这个问题:
在curl命令中,您是否在URL周围使用引号?因为如果没有,并且您在bash中(如果使用curl很可能),您可能实际上并不发送&ends_at=THEEND部件,因为&是一个将命令放在后台的shell元字符。
编辑
链接到论坛uNz0 0/xyG2qVxbBQAJ中的答案
https://stackoverflow.com/questions/49775802
复制相似问题