jax-rs jax-ws_什么是JAX-RS注释?

jax-rs jax-ws

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批注的文章。

第二部分介绍:

第三部分介绍:

让我们开始吧。

@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 books
    GenericEntity<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的文章,希望您对此感兴趣:

翻译自: https://www.javacodegeeks.com/2017/08/jax-rs-annotations.html

jax-rs jax-ws

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值