私は、2つの名前付きパラメーターと、本体で使用する必要があるEntityObjectを持つGoogleエンドポイントへのPUT呼び出しを実行しようとしています
@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
私が必要とする2つのパラメータフィールドと、リクエストボディには、入力できる MyEntity フィールドも正確に取得されます。
それは生成します:
PUT http://localhost:8889/_ah/api/myendpoint/v1/mymethod/test1/test2
ボディには私が入力したフィールドがあります
サーバー側では、私が期待しているものを正確に取得します。
しかし、今はクライアント側で自分でやろうとしていますが、常に本体のすべてで rpc 呼び出しを生成しているようです。
次のような呼び出し: (その「ボディ」はトライアウトです)
gapi.client.myendpoint.mymethod({param1:"test1",param2:"test2",body:{field1:"data",field2:"data2"}})
私はこれへのポストリクエストを受け取ります:
http://localhost:8889/_ah/api/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」がどこから来ているのかわからない(私はlocalhostでテストしています)Google APIがどこから来ているのか、それは「apis.google.com」であるべきだと思いました
同じ場所で同じ API を直接使用する場合:
gapi.client.myendpoint.mymethod の場合、localhost だけに正しく移動します...
私が(rpcの方法で)それを機能させるように見える唯一の方法は、ものをマージすることです:
var x = {field1:"data", field2:"data2"};
x.param1 = "test1";
x.param2 = "test2";
gapi.client.myendpoint.myMethod(x)
しかし、あなたが私に尋ねると、これはかなりのハックです。なぜなら、今私はものを混ぜ合わせているからです。突然、EntityObjectにparam1を追加すると、それも取得されます(本体とパス(またはURLパラメーター)のものを分離する必要があります。)
したがって、生成メソッド「gapi.client.xxxxendpoint」は常に rpc 呼び出しであり、残りの使用方法は間違ったホストに行くようです。