2016-06-15 16 views
0

私はREST APIデザインに新しく、私は書くつもりのAPIについて2つの質問があります。spring-restとspringfoxでbyte []を使用する

PDFファイルのエンコーディングを指定してデータベースにオブジェクトを作成するサービスを作成したいとします。

私の現在のサービスは次のようになります。

@RequestMapping(value = "/create", method = RequestMethod.POST, 
    produces = MediaType.APPLICATION_JSON_VALUE, 
    consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE) 
public String create(@RequestBody byte[] pdf) 

私の質問は以下のとおりです。

  1. は、REST APIと[]バイトを使用することを "推奨" となっていますか? PS:サービスはWebクライアントとツールキットで消費されます。
  2. 私はAPIを文書化するためにspringfoxを使用しようとしました。 UIツールではバイナリデータを送信できません。

Iは、次の注釈

@ApiImplicitParams({ 
    @ApiImplicitParam(name = "pdf", value = "PDF encoding", required = true, 
    allowMultiple = true, 
    paramType = "body", dataType = "byte") 
    }) 

生成JSON使用される:

{"type":"array","items":{"type":"string","format":"byte"}} 

UIインターフェースはPDF符号化のためのテキストエリアが表示され、文字列のような任意のコンテンツを送信しかし。 (たとえば、値「5」を提出すると、サーバーは[53]を受け取ります)。

私はこのレベルで何が欠けているか考えていますか?

- EDIT -

PDFをHTMLフォームからクライアント側で生成されます。したがって、単純なフォーム提出ではありません。

答えて

1

uploading filesの推奨アプローチは、MultipartFileを使用することです。だから私は以下のように署名を変更したいと思います。

第2に、ドキュメントのために、@ApiImplicitParamsについては心配しないでください。上記の解決策が有効かどうかを確認してください。

あなたがswagger-uiで期待通りに動作していることを確認したら、説明を文書化するために@ApiParamを使用してください。@ApiImplicitParamsは、名前が示すとおりのパラメータを文書化するために使用されますimplicit。したがって、たとえば、メソッドシグニチャがHttpServletRequestのような生の型を処理し、という暗黙的にの一部のパラメータを抽出した場合、その注釈を使用するとします。

+0

ユーザーが常にファイルをアップロードするとは限りませんので、MultipartFileタイプは使用しませんでした。 PDFはクライアント側でHTMLフォームから生成されます。 – ferjani

関連する問題