首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google端点获取请求URL参数[Python]

Google端点获取请求URL参数[Python]
EN

Stack Overflow用户
提问于 2018-04-11 12:58:04
回答 3查看 1.2K关注 0票数 2

我目前正在做一个小项目,在那里我需要编写一个GET处理程序。我正在使用端点文档中提供的Echo示例。

我有我的资源容器:

代码语言:javascript
复制
GET_EMAIL_RESOURCE = endpoints.ResourceContainer(
    message_types.VoidMessage,
    i = messages.IntegerField(1, default = 1)
)

我有我的经纪人:

代码语言:javascript
复制
@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:

代码语言:javascript
复制
curl --request GET --header "Content-Type: application/json" http://localhost:8080/_ah/api/echo/v1/echo/getEmails/3

现在,这很好,并返回您期望的内容,但是如果我需要将更多信息编码到我的URL中,如:

代码语言:javascript
复制
getEmails/value1=someValue&value2=someOtherValue

我不知道如何做到这一点,也无法在文档中找到解释或示例。

任何帮助都将不胜感激。

编辑1:

我的代码现在看起来是这样的:

代码语言:javascript
复制
# 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中,我有:

代码语言:javascript
复制
"/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的默认内容

EN

回答 3

Stack Overflow用户

发布于 2018-04-11 17:36:29

ResourceContainer中没有在path值中使用的任何字段都应该成为查询参数。

票数 0
EN

Stack Overflow用户

发布于 2018-04-12 10:50:08

为了修改参数,您需要为所需的路径配置openapi.json文件。下面是一个例子:

代码语言:javascript
复制
"/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以接受第二个参数。

下面是一个例子:

代码语言:javascript
复制
YOUR_RESOURCE_CONTAINER = endpoints.ResourceContainer(
message_types.VoidMessage,
parameter1=messages.IntegerField(1, default=1),
parameter2=messages.IntegerField(2, default=2))

记住一件事:当使用卷发时,记得在url中添加"“。不使用它可能会导致呼叫失灵。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 07:57:02

谷歌论坛的这个回答为我解决了这个问题:

在curl命令中,您是否在URL周围使用引号?因为如果没有,并且您在bash中(如果使用curl很可能),您可能实际上并不发送&ends_at=THEEND部件,因为&是一个将命令放在后台的shell元字符。

编辑

链接到论坛uNz0 0/xyG2qVxbBQAJ中的答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49775802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档