1

POST で送信された XML 文字列を受け取る REST API メソッドを作成したいと考えています。Swagger Editorを使用して、REST API をトップダウンで設計し、サーバー スタブ コードを生成しています。

my の POST メソッドは次のようになりますswagger.yaml

  /models:
    post:
      summary: Store a model.
      description: Stores the XML content of the specified model.
      consumes:
        - application/xml;charset=UTF-8
      parameters:
        - name: model
          in: body
          description: The model XML you want to store
          schema:
            type: string
          required: true
      responses:
        201:
          description: Model stored successfully
          headers:
            location:
              description: URL of the stored model.
              type: string

yaml ファイルには、次のグローバル設定もあります。

produces:
  - application/json

Swagger Editor の[Generate Server] > [Spring ] メニュー オプションを使用すると、POST メソッドに対して次のインターフェイス メソッドが生成されます。

    @ApiOperation(value = "Store a model.", notes = "Stores the XML content of the specified model.", response = Void.class, tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 201, message = "Model stored successfully", response = Void.class) })
    @RequestMapping(value = "/models",
        produces = { "application/json" }, 
        consumes = { "application/xml;charset=UTF-8" },
        method = RequestMethod.POST)
    ResponseEntity<Void> modelsPost(

@ApiParam(value = "The model XML you want to store" ,required=true ) @RequestBody String model);

これは、対応するスタブの実装です。

    public ResponseEntity<Void> modelsPost(
@ApiParam(value = "The model XML you want to store" ,required=true ) @RequestBody String model

) {
        // do some magic!
        return new ResponseEntity<Void>(HttpStatus.OK);
    }

Postman を使用して、実行中の Springboot サービスのメソッドにダミーの XML をポストします。

郵便屋さんのスクリーンショット

しかしmodel、実装メソッド内の値をlog.debug("Model XML = " + model);出力すると、ログに次のような出力が得られます。

Model XML = ------WebKitFormBoundaryA3o70hOgLFoLLBoY
Content-Disposition: form-data; name="model"

<?xml version="1.0" encoding="utf-8"?><Hello></Hello>
------WebKitFormBoundaryA3o70hOgLFoLLBoY--

XML 自体だけを の値にするにはどうすればよいmodelですか? この例では、代わりにこれになりたい:

<?xml version="1.0" encoding="utf-8"?><Hello></Hello>

Swagger Editor が生成しているため、Java メソッド シグネチャを直接編集することはできません。私の闊歩定義が間違っている場合、XML 文字列を投稿する代わりに何を使用すればよいですか?

実際の XML は大きくなる可能性が高いため、要求パラメーターとして送信することはできません。また、XML を処理するつもりもないので、文字列として扱っても問題ありません。

4

2 に答える 2