我在理解这方面的一些文档时遇到了一些麻烦。位于......
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对象中?这很可能就是这种情况,因为Endpoints不允许在params和成员之间发生任何名称冲突。
我似乎无法找到关于此的文档,有人可以简单地帮助我,所以我可以确定通过这些东西的格式是什么?感谢。
答案 0 :(得分:16)
不幸的是,除了一些小提及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'}
})
如果您有查询和网址参数,则如下所示:
gapi.client.myapi.myresource.mymethod({
'param1': 'value1',
'param2': 'value2',
'resource': body
})
其中body
可以是任何JSON对象。或者对于不需要身体的方法,你只需要
gapi.client.myapi.myresource.mymethod({
'param1': 'value1',
'param2': 'value2'
})