6

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

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 对象中?很可能就是这种情况,因为端点不允许参数和成员之间发生任何名称冲突。

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

4

1 回答 1

16

不幸的是,这没有很好的记录,除了一些小的提及,例如这里

通常调用 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'
})
于 2013-11-06T10:11:49.533 回答