Google app engine 当使用gapi.client.myendpoint或gapi.client.request时,如何执行真正的REST调用?

Google app engine 当使用gapi.client.myendpoint或gapi.client.request时,如何执行真正的REST调用?,google-app-engine,rest,google-cloud-endpoints,Google App Engine,Rest,Google Cloud Endpoints,我正在尝试对一个GoogleEnpoint进行PUT调用,它有两个命名参数和一个EntityObject,然后应该在主体中使用它 @ApiMethod(name = "myMethod") public MyEntity myMethod(@Named("param1") String param1, @Named("param2") String param2, MyEntity entity) 如果我去: https://developers.google.com/apis-explore

我正在尝试对一个GoogleEnpoint进行PUT调用,它有两个命名参数和一个EntityObject,然后应该在主体中使用它

@ApiMethod(name = "myMethod")
public MyEntity myMethod(@Named("param1") String param1, @Named("param2") String param2, MyEntity entity)
如果我去:

https://developers.google.com/apis-explorer/?base=http://localhost:8889/_ah/api#p/myendpoint/v1/myendpoint.myMethod
我有两个需要填写的参数字段,但在请求正文中,我也得到了我可以填写的MyEntity字段

它产生:

PUT http://localhost:8889/_ah/api/myendpoint/v1/mymethod/test1/test2
身体有我填写的字段

在服务器端,我得到了我期望得到的东西

但是现在我试着在客户端自己做,但是它似乎总是用身体中的所有东西生成一个rpc调用

像这样的电话:(那个“身体”是试用期)

我收到一个对此的post请求:(所以它看起来像一个rpc调用,但这不是我真正想要的)

一切都在体内。。 在我的服务器端,EntityObject完全为空,因为它没有正确映射

如果我自己用以下方法重建它:

https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientrequest

    var request = gapi.client.request({
              path: "myendpoint/v1/mymethod/" + param1+ "/" +param2,
              method: 'PUT',
              body: {field1:"data",field2:"data2"}
            });
然后我收到一个请求:

https://content.googleapis.com/myendpoint/v1/mymethod/test1/test2&alt=json
不确定“content.googlepis.com”来自何处(我正在本地主机上测试) 我想如果它是google api的发源地,那么它应该是“api.google.com”

如果我在同一个地方直接使用相同的api:

gapi.client.myendpoint.mymethod然后它只正确地转到本地主机

我想让它工作的唯一方法(以rpc方式)是合并这些东西:

var x = {field1:"data", field2:"data2"};
x.param1 = "test1";
x.param2 = "test2";
gapi.client.myendpoint.myMethod(x)
但如果你问我,这是一个相当大的技巧,因为现在我混合了一些东西,突然,如果我将param1添加到EntityObject,它也会得到 (正文和路径(甚至url参数)应该分开。)

因此,生成方法“gapi.client.xxxxendpoint”似乎总是rpc调用
其余的使用方法是转到错误的主机。

根据文档,您应该使用“资源”而不是“主体”

https://content.googleapis.com/myendpoint/v1/mymethod/test1/test2&alt=json
var x = {field1:"data", field2:"data2"};
x.param1 = "test1";
x.param2 = "test2";
gapi.client.myendpoint.myMethod(x)
...    
method: 'PUT',
resource: {field1:"data",field2:"data2"}
...