2

iOS 用 API をエクスポートしたときに API Gateway に表示されるように、POST エンドポイントのリクエスト モデルを追加するにはどうすればよいですか? リクエスト モデルを AWS に手動で追加できますが、これはサーバーを介してデプロイされないため、必要ありません。エンドポイントを定義するための responseModels が表示されますが、requestModels が表示されませんか?

私の s-functions.json にはこれがあります

"endpoints": [
    {
      "path": "blog/graphql",
      "method": "POST",
      "type": "AWS",
      "authorizationType": "AWS_IAM",
      "authorizerFunction": false,
      "apiKeyRequired": false,
      "requestParameters": {},
      "requestTemplates": {
        "application/json": "{\"query\" : $input.json(\"$\")}"
      },
      "responses": {
        "400": {
          "statusCode": "400"
        },
        "default": {
          "statusCode": "200",
          "responseParameters": {},
          "responseModels": {},
          "responseTemplates": {},
          "application/json": ""
        }
      }
    }
  ]

AWS APIGateway では、リクエスト モデルを次のように手動で追加する必要があります。

{
    "title": "Example Schema",
    "type": "object",
    "properties": {
        "query": {
            "type": "string"
        }
    },
    "required": ["query"]
}

その後、iOS 用の API をエクスポートすると、graphQL クエリを送信するための正しいメソッドが取得され、機能します。

しかし、これをサーバーレスデプロイでデプロイしたいので、これを手動で追加し続けることはできません。

また、手動で https を実行するのではなく、cognito 資格情報を使用するために、iOS 用の APIGateway SDK を通過する API エンドポイント呼び出しが必要です。

4

1 に答える 1

1

サーバーレス プロジェクトのlib/Endpoint.jsには requestModels のエントリが含まれていないようですが、プロジェクトは積極的に維持されているため、GitHub で問題を提起してサポートを追加してもらうことができます。それまでの間、これに対する AWS CLI のアプローチを共有すると役立つかもしれないと考えました。

応答モデルを作成するのと同じ方法で要求モデルを作成しますが、それらを作成するaws apigateway put-method-responseと、要求モデルをメソッドに関連付けるための単純なコマンドはありません。これは、AWS CLI に欠けている機能のようです。

しかし、私はそれを使用して動作させましaws apigateway update-methodた。最初にリクエストのモデルを作成しておく必要があります。次に、このコマンドでそれをメソッドに追加します。

aws apigateway update-method \
  --region $region \
  --rest-api-id "$rest_api_id" \
  --resource-id "$resource_id" \
  --http-method $method \
  --patch-operations "op=add,path=/requestModels/application~1json,value=${request_model_name}"

奇妙な構造は、スラッシュがパスの一部として解釈されるapplication~1jsonのを止めることです。application/json

ちなみに、JSONファイルの引数を機能させようとして失敗し--patch-operationsました。このファイルが以下のエラーにつながる理由を誰かが明らかにできる場合は、それについて聞きたいです。

$ cat patch.json
{
    "patchOperations":[{
        "op" : "add",
        "path" : "/requestModels/application~1json",
        "value" : "TestRequest"
    }]
}
$ aws apigateway update-method \
  --rest-api-id abc123 \
  --resource-id def456 \
  --http-method POST \
  --patch-operations "file://patch.json"
Error parsing parameter '--patch-operations': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
JSON received: {
于 2016-06-26T16:11:37.140 に答える