什么是JAX-RS注释?
JAX-RS概述(第1部分)
JAX-RS API構成Java EE平臺承諾提供標準驅動技術的重要組成部分。 互聯網無處不在的性質以及對微服務體系結構的日益增長的興趣已將更多的精力放在小型可擴展的自治服務及其互操作性上。 允許微服務彼此之間以及“外部世界”之間進行通信的主要方法是REST,它在開發RESTful API中的用途以及Java EE為此提供的技術是JAX-RS:RESTful Web Services的Java API 。
JAX-RS的目標
JAX-RS API的目標是:
- 基于POJO
提供與POJO一起使用的類/接口和相關批注的集合,以將其公開為Web資源。 - 以HTTP為中心
要將HTTP用作基礎網絡協議,并在HTTP和URI元素以及相應的API類和注釋之間提供清晰的映射。 - 格式獨立
適用于各種HTTP實體主體內容類型,并提供必要的可插入性以允許添加其他類型。 - 容器獨立性
為了確保使用該API的工件可以部署在一系列Web服務器中。 - 包含在Java EE中
允許在Web資源類中使用Java EE功能和組件。
JAX-RS注釋概述
JAX-RS API中的注釋用于在Web資源周圍提供元數據。 一個典型的示例是將@GET注釋與@Path注釋一起使用,以標識應處理對@Path注釋中的指定URI的GET請求的方法。
接下來是對標記的快速概述,這些標記可用于標記用于構造Web資源的方法和類。 這不是一個詳盡的列表,JAR-RS軍械庫中還有更多注釋,但是由于JAX-RS的大部分工作是在配置和處理Web資源中,因此您可以在其中找到大部分已使用的API批注。
這是由三部分組成的系列文章中的第一個介紹JAX-RS批注的文章。
第二部分介紹:
- @Path注釋和@PathParam
- @QueryParamter批注
- @Produces批注
- @Consumes批注
第三部分介紹:
- @FormParam批注
- @MatrixParam批注
- @CookieParam批注
- @HeaderParam批注
- @Provider批注
讓我們開始吧。
@ApplicationPath批注
讓我們從具有@ApplicationPath批注的樹的頂部開始:
@ApplicationPath("/api") public class RESTConfig extends Application {}從這里開始定義資源的URI。 在這里,我們說所有的資源都可以在/ api根目錄下找到。 該URL應該如下所示: http:// localhost:8080 / webcontext / api / ,其中webcontext是應用程序的名稱。
@Path注釋
接下來,是資源的URI路徑。 在書店應用程序中,它可能是/ books / 。
@Path("/books") public class BookResource {}現在,書籍資源的URI為/ api / books ,URL為http:// localhost:8080 / webcontext / api / books。 按照慣例,將資源命名為名詞和復數形式。
一旦定義了我們的資源路徑,就為HTTP方法和上下文類型配置了單獨的資源方法。 這就是樂趣的開始。
每個HTTP方法都有一個注釋。
@GET HTTP方法注釋
具有@GET批注的方法批注響應HTTP get請求。
@GET @Produces(MediaType.APPLICATION_JSON) public Response getAllBooks() {List<Book> books = BookRepository.getAllBooks(); // queries database for all booksGenericEntity<List<Book>> list = new GenericEntity<List<Book>>(books) {};return Response.ok(list).build(); }請注意, GenericEntity包裝器用于將List的通用類型維護為Book。
@POST HTTP方法注釋
帶有@POST注釋的方法會響應POST方法的請求。
@POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response saveBook(Book book) {book = bookRepository.saveBook(book);return Response.ok(book).build(); }POST HTTP方法通常用于創建資源。 此示例代碼將新書對象保留在數據庫中。
@PUT HTTP方法注釋
@PUT批注用于更新記錄,并以這種方式注釋的方法響應HTTP PUT請求。
@PUT @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response updateBook(Book book) {book = bookRepository.updateBook(book);return Response.ok(book).build(); }@DELETE HTTP方法注釋
標有@DELETE的方法應刪除資源。
@DELETE @Path("{isbn}") @Produces(MediaType.APPLICATION_JSON) public Response deleteBook(@PathParam("isbn") String isbn) {Book book = bookRepository.deleteBookByIsbn(isbn);return Response.ok(book).build(); }通常,如本例所示,資源或其ID從URI變量傳遞到資源方法參數。
@OPTIONS HTTP方法注釋
用@OPTIONS注釋的方法響應HTTP Option請求。
@OPTIONS public Response preflight() {return Response.ok().header("Allow", true).build(); }當客戶端希望向其他域發出復雜的HTTP請求時,將options方法用作請求。 這樣做是為了確定是否允許客戶端提出請求。
@HEAD HTTP方法注釋
HTTP HEAD方法與HTTP GET方法相同,除了服務器不得在響應中使用正文進行響應。
@HEAD public Response headsUp() {return Response.ok().build(); }此方法用于獲取有關實體的元數據,而無需發回實體主體本身。
代碼庫
本文的源代碼位于我的GitHub存儲庫中 。 我所有文章的代碼都在ReadLearnCode文章存儲庫中。
接下來是什么?
就是第一部分,接下來是第二部分,您將在其中了解有關用于制作RESTful Web端點的注釋的更多信息。
進一步閱讀
我已經發布了更多有關JAX-RS的文章,希望您對此感興趣:
- JAX-RS 資源實體是有關創建資源實體的文章
- 是否曾經想過@ javax.ws.rs.core.Context 批注是關于什么的?
- 了解有關@Consumes和@Produces批注的更多信息,最后
- 您不能在不了解bean驗證失敗管理的情況下編寫健壯的端點
翻譯自: https://www.javacodegeeks.com/2017/08/jax-rs-annotations.html
總結
以上是生活随笔為你收集整理的什么是JAX-RS注释?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 触摸台式电脑显示器价格(触摸屏台式机)
- 下一篇: 全国最适合女性出家的寺院(中国女子出家的