Restful傳遞數(shù)組參數(shù)及注解大全
RESTful 一種軟件架構(gòu)風(fēng)格,設(shè)計(jì)風(fēng)格而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。它主要用于客戶端和服務(wù)器交互類的軟件?;谶@個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡(jiǎn)潔,更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制。
需要傳遞數(shù)組參數(shù)的情況,如果是一般的form表單,可以直接定義參數(shù)類型為L(zhǎng)ist<String>即可(不能定義為數(shù)組類型,否則只能得到一個(gè)null)。
示例代碼如下:
@POST @Path("/user" ) public Response createUser(@FormParam("username" ) String username, @FormParam( "keyword") List<String> keywords) {
文件上傳接口如何傳遞 數(shù)據(jù) 參數(shù)?
但是如果是上傳文件的接口,因?yàn)槭褂昧?@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) {
訪問這個(gè)接口時(shí)會(huì)發(fā)生異常:
java.lang.IllegalArgumentException : wrong number of arguments
可見使用 @FormDataParam 注解時(shí),將參數(shù)類型定義成List<String>是不行的,可以定義成 List<FormDataBodyPart> ,從 FormDataBodyPart對(duì)象中可以取得參數(shù):
@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( "關(guān)鍵字:" + keyword ); } }
RESTful 注解大全
@GET、@POST、@PUT、@DELETE、@HEAD
@GET、@POST、@PUT、@DELETE 以及 @HEAD 均是 HTTP 請(qǐng)求方法指示符注釋。您可以使用它們來綁定根資源或子資源內(nèi)的 Java 方法與 HTTP 請(qǐng)求方法。HTTP GET 請(qǐng)求被映射到由 @GET 注釋的方法;HTTP POST 請(qǐng)求被映射到由 @POST 注釋的方法,以此類推。
@Conumes 和 @Produces
@Conumes注釋代表的是一個(gè)資源可以接受的MIME類型。@Produces注釋代表的是一個(gè)資源可以返回的MIME類型。
@Path
@Path注釋被用來描述根資源、子資源方法或子資源位置。value值可以包含文本字符、變量或具有定制正則表達(dá)式的變量。
相關(guān)文章
java存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)
下面小編就為大家?guī)硪黄猨ava存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案
這篇文章主要介紹了通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03JAVA實(shí)現(xiàn)經(jīng)典游戲坦克大戰(zhàn)的示例代碼
小時(shí)候大家都玩過坦克大戰(zhàn)吧,熟悉的旋律和豐富的關(guān)卡陪伴了我們一整個(gè)寒暑假。本文將通過Java+Swing實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以學(xué)習(xí)一下2022-01-01Java實(shí)現(xiàn)酒店客房管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)酒店客房管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02Java中使用ForkJoinPool的實(shí)現(xiàn)示例
ForkJoinPool是一個(gè)功能強(qiáng)大的Java類,用于處理計(jì)算密集型任務(wù),本文主要介紹了Java中使用ForkJoinPool的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09