私はJAX-RSを使い始めていて、いくつかの問題があります。ここに私のコードのスニペットがあります。 getMergedPDFReportメソッドは、ある処理の後にファイルを取り、ファイルを返す必要があります。私はJAX-RSの問題
@GET
@Produces("application/pdf")
@Path("merge-service")
public Response getMergedPDFReport(@QueryParam(ApiParameters.WORD_DOCUMENT) File wordDocument,
@QueryParam(ApiParameters.MERGE_FIELDS)Object[] fieldNames,
@QueryParam(ApiParameters.MERGE_VALUES) Object [] fieldValues) {
ResponseBuilder builder =null;
try {
File product = DocumentUtil.generatePDF(wordDocument, fieldNames, fieldValues);
builder = Response.ok(product);
builder.header("Content-Disposition", "attachment; filename=\\\"report.pdf\\\"");
} catch (Exception e) {
e.printStackTrace();
}
return builder.build();
}
クライアント心配と思われる後、私は「タイプ公共javax.ws.rs.core.Responseのパラメータが見つかりませ注入源」を言わない私のサーバーログに警告が表示されます。なぜか分からないようです。 2. @QueryParam注釈権限を使用していますか?私はそれをFileとArrayの型に使うべきですか? @BeanParam、@MatrixParam、@QueryParamについて、多くの議論がオンラインで見られました。最初の2つが何をするのか分からなかったので、私はそれを簡単にすることに決めました。
ご協力いただければ幸いです。
私はあなたが得る警告が実際にあなたがその方法ではタイプ 'Response'のパラメータを持っていないとして、あなたが提示したコードに関連しているかはわからない:この
チェック。あなたの一般的なデザインにはいくつかの欠陥があります。IMO:GETではなくHTTP POSTを使用してファイルをアップロードします。 GETは安全で冪等の操作なので、リソースの状態を変更してはいけません。呼び出されるURIは、多くの場合、フレームワークの長さによって制限されます。エンコードされたファイルをクエリパラメータとして渡すと、URIの長さがかなり長くなり、拒否の可能性が高くなります。 –