0

Guzzleでカスタム連載したいです。

リクエストを設定してPOST application/jsonいますが、オブジェクトは最初にその名前 (professionalSession) でシリアル化されています。

{
 professionalSession :
  {
    param1 : "asdf",
    param2 : "jkl;",
    ...
   }
}

これは、呼び出しようとしている REST API と矛盾しています。(className はパラメータの 1 つとして隠されています)。

これは私の定義ですserviceDescription.json

"PostAuthentication": {
        "httpMethod": "POST",
        "uri": "/xxx-person-service/session",
        "summary": "Posts the session object",
        "type": "json",
        "responseClass": "XXX\\WebServicesClientBundle\\Entity\\ProfessionalSession",
        "parameters":{
            "session": {
                "location": "json",
                "required": true
            },
            "session-identifier": {
                "location": "header",
                "required": true,
                "sentAs": "HTTP_X_SESSION_KEY"
            }
        }
    }

私は使用serviceDescription.jsonし、その1つのパラメーターのみをオーバーライドしたいと思います(jsonを自分で生成することにより)。

param の場所を に変更しようとしましたbodyが (SO どこかで言われていたように)、 Content-Type が に正しく設定されていませんapplication/json

どうすればいいですか?ありがとう!

4

1 に答える 1

1

まだ返信がなく、この問題を克服したので返信します。param の場所を変更するbodyことは、その最上位の JSON 要素を削除するための良いアプローチでした。(これは問題として通知されましたが、それでも - これが Guzzle の動作です。)

リクエストを次のように変更するapplication/jsonには、 の次の説明を使用できますserviceDescription.json

   "PostAuthentication": {
        "httpMethod": "POST",
        "uri": "/xxx-person-service/session",
        "summary": "Posts the session object",
        "responseClass": "XXX\\WebServicesClientBundle\\Entity\\ProfessionalSession",
        "parameters":{
            "session": {
                 "location": "body",
                 "required": true
            },
            "session-identifier": {
                "location": "header",
                "required": true,
                "sentAs": "HTTP_X_SESSION_KEY"
            },
            //THIS is what you need:
            "content-type": {
                "location": "header",
                "static": true,
                "required" : true,
                "default" : "application/json",
                "sentAs" : "Content-Type"
            }
        }
    },
于 2013-11-11T16:32:24.110 に答える