JavaScript SDKを使用してAPI Gatewayエンドポイントを呼び出すときにパスパラメータを設定しようとしています。私は何かが間違って設定されているか、SDKの生成にバグがあるようです。AWS API GatewayのJavaScript APIでパスパラメータを設定する
パスパラメータを使用しないエンドポイントを正常に呼び出すことができますが、パスパラメータとして使用するパラメータを渡そうとすると、SDKはパスパラメータを空白に置き換えて呼び出しが失敗します。
例:client
が適切に初期化されたAPIゲートウェイクライアントであるとします。私は、/measurement/{id}
の子を持つ/measurement
というエンドポイントを持っています。私は両方を直接呼び出すことができます。
client.measurementGet({},{});
- 成功した私の/measurement
エンドポイント client.measurementIdGet({"id": "1234"}, {});
を呼び出す - ブラウザは私のapigClient.jsのソースを見てみる代わりに/measurement/1234
の/measurement/
への呼び出しを行い、SDKジェネレータはへパスパラメータを入れていないように見えます探しているパラメータのリスト。例えば、私の生成measurementIdGet
方法のコードは次のようになります。
apigClient.measurementIdGet = function (params, body, additionalParams) {
if(additionalParams === undefined) { additionalParams = {}; }
apiGateway.core.utils.assertParametersDefined(params, [], ['body']);
var measurementIdGetRequest = {
verb: 'get'.toUpperCase(),
path: pathComponent + uritemplate('/measurement/{id}').expand(apiGateway.core.utils.parseParametersToObject(params, [])),
headers: apiGateway.core.utils.parseParametersToObject(params, []),
queryParams: apiGateway.core.utils.parseParametersToObject(params, []),
body: body
};
return apiGatewayClient.makeRequest(measurementIdGetRequest, authType, additionalParams, config.apiKey);
};
私はassertParametersDefined
とparseParametersToObject
に掘って、これらのメソッドは、探すためのパラメータのリストを期待しているように見えます。どちらの場合も、SDKはパスパラメータを入力する代わりに空のリストを生成しています。
私は手動で
apiGateway.core.utils.assertParametersDefined(params, ['id'], ['body']);
と
apiGateway.core.utils.parseParametersToObject(params, ['id'])
SDKに2行を変更するために生成されたファイルを更新する場合は、適切な呼び出しを行います。
設定に何か不足していますか、コードジェネレータにバグがありますか?
の作品のようなリソースの
。これに関するどんな更新? @mason – johnny
私のために同じ問題。私はフォーラムでそれについて尋ねたが、何の答えも得ていない:https://forums.aws.amazon.com/thread.jspa?messageID=734395。 SDKジェネレータがオープンソースであるかどうかは誰にでも分かりますか?どこでも見つかりませんでした – Sam
バグは残念ですが、ここに更新はありますか?引き続きこの問題を解決する – AvnerSo