【问题标题】:Google Cloud Endpoints - Making calls with JS client, passing params and JSON bodyGoogle Cloud Endpoints - 使用 JS 客户端进行调用,传递参数和 JSON 正文
【发布时间】:2013-11-17 06:27:38
【问题描述】:

我在理解这方面的一些文档时遇到了一些麻烦。位于...

https://developers.google.com/appengine/docs/java/endpoints/consume_js

特别...

// Insert a score
gapi.client.tictactoe.scores.insert({'outcome':
    'WON'}).execute(function(resp) {
  console.log(resp);
});

// Get the list of previous scores
gapi.client.tictactoe.scores.list().execute(function(resp) {
  console.log(resp);
});

似乎他们正在将分数对象(作为请求正文中的 JSON)传递给他们的 API 调用以添加分数。好的,听起来很酷。但目前尚不清楚您将如何传递查询参数、URL 参数,或者可能同时传递这三个参数。

它们会是这样的三个 JSON 对象吗...

gapi.client.tictactoe.scores.insert({
    'outcome': 'WON'
},
{
    urlParamName: 'value'
},
{
    queryParamName: 'value'
},).execute( ...

或者它们都在同一个 JSON 对象中?很可能就是这种情况,因为端点不允许参数和成员之间发生任何名称冲突。

我似乎找不到这方面的文档,有人可以简单地帮助我,这样我就可以确定传递这些东西的格式是什么?谢谢。

【问题讨论】:

    标签: google-cloud-endpoints


    【解决方案1】:

    不幸的是,这没有很好的记录,除了一些小的提及,e.g. here

    API 方法通常这样称呼:

    gapi.client.myapi.myresource.mymethod(params)
    

    params 是一个 JSON 对象,包括所有查询和路径参数,以及一个 resource,它将在 POST 请求中作为正文发送。

    实际上,在上面的示例中,他们将outcome 作为查询参数作为POST 请求发送到tictactoe\v1\scores?outcome=WON,但正文为空。之所以可行,是因为 Cloud Endpoints 在合并来自正文和查询以及 URL 参数的请求对象时没有任何区别。这在这种情况下有效,但一旦您在请求正文中嵌套了 JSON 对象,就会失败。

    调用上述方法的正确方法是

    gapi.client.tictactoe.scores.insert({
        'resource': {'outcome': 'WON'}
    })
    

    如果您有查询和 URL 参数,则如下所示:

    gapi.client.myapi.myresource.mymethod({
        'param1': 'value1',
        'param2': 'value2',
        'resource': body
    })
    

    body 可以是任何 JSON 对象。或者对于不需要主体的方法,您只需拥有

    gapi.client.myapi.myresource.mymethod({
        'param1': 'value1',
        'param2': 'value2'
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多