Restful傳遞數組參數及注解年夜全。本站提示廣大學習愛好者:(Restful傳遞數組參數及注解年夜全)文章只能為提供參考,不一定能成為您想要的結果。以下是Restful傳遞數組參數及注解年夜全正文
RESTful 一種軟件架構作風,設計作風而不是尺度,只是供給了一組設計准繩和束縛前提。它重要用於客戶端和辦事器交互類的軟件。基於這個作風設計的軟件可以更簡練,更有條理,更容易於完成緩存等機制。
須要傳遞數組參數的情形,假如是普通的form表單,可以直接界說參數類型為List<String>便可(不克不及界說為數組類型,不然只能獲得一個null)。
示例代碼以下:
@POST @Path("/user" ) public Response createUser(@FormParam("username" ) String username, @FormParam( "keyword") List<String> keywords) {
文件上傳接口若何傳遞 數據 參數?
然則假如是上傳文件的接口,由於應用了 @FormDataParam 注解,則不克不及應用上述用法:
@POST @Path("/upload" ) @Consumes(MediaType.MULTIPART_FORM_DATA ) public Response uploadFile(@FormDataParam ("filename" ) String filename, @FormDataParam( "file") InputStream uploadedInputStream, @FormDataParam( "file") FormDataContentDisposition fileDetail , @FormDataParam( "keyword") final List<String> keywords) {
拜訪這個接口時會產生異常:
java.lang.IllegalArgumentException : wrong number of arguments
可見應用 @FormDataParam 注解時,將參數類型界說成List<String>是不可的,可以界說成 List<FormDataBodyPart> ,從 FormDataBodyPart對象中可以獲得參數:
@POST @Path("/upload" ) @Consumes(MediaType.MULTIPART_FORM_DATA ) public Response uploadFile(@FormDataParam("filename" ) String filename, @FormDataParam( "file") InputStream uploadedInputStream, @FormDataParam( "file") FormDataContentDisposition fileDetail , @FormDataParam( "keyword") final List<FormDataBodyPart> keywordObjs ) { if (keywordObjs != null && ! keywordObjs.isEmpty()) { for (FormDataBodyPart keywordObj : keywordObjs) { String keyword = keywordObj.getValueAs(String.class); System. out.println( "症結字:" + keyword ); } }
RESTful 注解年夜全
@GET、@POST、@PUT、@DELETE、@HEAD
@GET、@POST、@PUT、@DELETE 和 @HEAD 均是 HTTP 要求辦法指導符正文。您可使用它們來綁定根資本或子資本內的 Java 辦法與 HTTP 要求辦法。HTTP GET 要求被映照到由 @GET 正文的辦法;HTTP POST 要求被映照到由 @POST 正文的辦法,以此類推。
@Conumes 和 @Produces
@Conumes正文代表的是一個資本可以接收的MIME類型。@Produces正文代表的是一個資本可以前往的MIME類型。
@Path
@Path正文被用來描寫根資本、子資本辦法或子資本地位。value值可以包括文本字符、變量或具有定制正則表達式的變量。