什么是JAX-RS注释? (第3部分)
JAX-RS注釋概述(第3部分)
這是一個由三部分組成的系列,介紹了用于實現REST端點的注釋。
在JAX-RS批注的第二部分中,您了解了:
- @Path注釋和@PathParam
- @QueryParamter批注
- @Produces批注
- @Consumes批注
在這一部分中,您將了解有關JAX-RS批注的更多信息。 你準備好了嗎? 讓我們開始吧。
@FormParam批注
您可能需要直接從主體讀取POST HTTP請求中發送的參數,而不是將其序列化為對象。 這可以通過使用@FormParam批注來完成。
@POST @Produces(MediaType.APPLICATION_JSON) public Response saveBookF(@FormParam("title") String title,@FormParam("author") String author,@FormParam("price") Float price) {return Response.ok(bookRepository.saveBook(new Book(title, author, price))).build(); }@MatrixParam批注
矩陣參數是一組查詢參數,用分號(而不是“&”號)分隔。 發生這種情況的原因是,這些值是從多個選擇輸入框中選擇的,并且是通過GET請求而不是POST請求進行設置的。 該網址可能看起來像這樣:
http://localhost:8080/api/books;author=atheedom;category=Java;language=english注釋@MatricParam用于從URI檢索參數值并將其分配給方法參數。
@GET @Produces(MediaType.APPLICATION_JSON) public Response getBookBy(@MatrixParam("author") String author,@MatrixParam("category") String category,@MatrixParam("language") String language) {return Response.ok(new GenericEntity<List<Book>>(bookRepository.getBookBy(author, category, language)) {}).build(); }@CookieParam批注
@CookieParam批注允許您將其直接注入到客戶端發送的資源方法cookie中。 想象一下,您已經向客戶發送了一個名為cartId的cookie,以便您可以跟蹤客戶的購物車。 要從HTTP請求中提取cookie,只需注釋要向其分配cookie數據的方法參數。
@GET @Produces(MediaType.APPLICATION_JSON) public Response getCart(@CookieParam("cartId") int cartId) {return Response.ok().build(); }@HeaderParam批注
@HeaderParam批注用于將HTTP請求標頭值注入資源方法參數。 您可以將其@Context使用@Context批注注入HttpServletRequest或HttpHeaders實例的快捷方式。
@GET @Produces(MediaType.APPLICATION_JSON) public Response getReferrer(@HeaderParam("referer") String referrer) {return Response.ok(referrer).build(); }@Provider批注
提供程序用于通過更改運行時的行為來擴展和自定義JAX-RS,以實現一組目標。
提供程序有三種類型:
- 實體提供者
這種類型的提供程序控制數據表示形式(例如JSON和XML)到其對象等效項的映射 - 上下文提供者
這種類型的提供程序控制資源可以使用@Context批注訪問的上下文 - 例外提供者
此類提供程序控制Java異常到JAX-RS Response實例的映射。
它們唯一的共同點是它們必須由@Provider批注標識,并遵循正確的構造函數聲明規則。
代碼庫
本文的源代碼位于我的GitHub存儲庫中 。 我所有文章的代碼都在ReadLearnCode文章存儲庫中。
進一步閱讀
如果您有興趣閱讀有關JAX-RS API的更多信息,那么這些文章將使您感興趣:
- Bean驗證失敗管理討論了當輸入數據完整性檢查失敗時如何處理對客戶端的響應
- 發現@ javax.ws.rs.core.Context 批注的所有用法
- 使用@Consumes和@Produces批注 ,以及
- JAX-RS資源實體討論如何創建JAX-RS資源實體
翻譯自: https://www.javacodegeeks.com/2017/08/jax-rs-annotations-part-3.html
總結
以上是生活随笔為你收集整理的什么是JAX-RS注释? (第3部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用JUnit 5测试异常
- 下一篇: linux系统unzip命令(linux