Rest架构与RESTful Web Service

Rest 架构 101

在微服务大行其道的今天、Rest 架构在其中扮演的角色不可忽视。本文将从下面4个问题出发,逐步建立起对 Rest 架构以及 RESTful Web Service 的整体概念。

  • 什么是 Rest ?
  • 什么是 RESTful Web Service ?
  • 什么是 JAX-RS ?
  • JAX-RS 与 Spring MVC 的区别与联系?
  • 总结

Rest--REpresentational State Transfer

Rest 是一种使用 HTTP 协议、基于现有 web 标准设计的应用架构。它由 Roy Fielding 于2000第一次提出。

Rest 将应用管理的内容抽象为资源、这些资源可以是文本文件、网页、图片、视频等。客户端通过 HTTP 协议定义的 GET、POST、DELETE、PUT 等标准方法获取资源。

REST 对资源的描述支持多种格式、较为常见的如 Text、JSON、XML。

HTTP 方法简介:

  1. GET − 查询资源
  2. POST − 创建资源
  3. DELETE − 删除资源
  4. PUT − 存在则更新、否则创建资源

RESTful Web Service

Web Service 简单理解就是一种契约、它由一系列协议和标准构成。目的就是定义应用或系统间应当以何种形式进行进行数据交换。这样即使应用运行的平台不同(操作系统、云平台)、编程语言不同,应用之间也可以使用 Web Service 通过计算机网络进行数据交换。

RESTful Web Service 即使用 HTTP 方法实现 REST 架构的 Web Service。

一个RESTful web service 通常会定义一个URI --唯一标识资源、资源的描述格式如 JSON 、资源支持的 HTTP 方法列表GET、POST等。

RESTful web service 举例:

URIHTTP MethodPOST BODYResult
/UserService/listUsersGETemtpyList of all users.
/UserService/addUserPOSTJSONDetail of new user.
/UserService/getUser/:idGETemptyDetail of user.

JAX-RS -- JAVA API for RESTful Web Services

JAX-RSR 是 Servlet API 的扩展、是为了支持 RESTful Web Services 而制定的接口标准及规范JAX-RSR 2.1 即 JSR-370

2.0版本于2013年发布、从Java SE 5 开始支持通过注解方式创建Web Service。 JAX-RSR 参考实现: Jersey-- Oracle 通过servlet实现RESTEasy--Red hatApache Cxf

Spring Framework vs JAX-RS

Spring 因为比 JAX-RSR 更早出现、所以它并未实现这个标准。而 Spring MVC 可以看作 JAX-RSR 的替代方案。

Examples

** 遵循 JAX-RS 标准 API 的资源 Controller: **

@Path("/greetings")
public class JaxRsController {

    @GET
    @Path("/{name}")
    @Produces(MediaType.TEXT_PLAIN)
    public Response greeting(@PathParam("name") String name) {
     String greeting = "Hello " + name;
     return Response.ok(greeting).build();
    }
}
复制代码

** 遵循 Spring MVC API 的等价实现: **

@RestController
@RequestMapping("/greetings")
public class SpringRestController {
    @RequestMapping(method = RequestMethod.GET, value = "/{name}", produces = MediaType.TEXT_PLAIN_VALUE)
    public ResponseEntity<?> greeting(@PathVariable String name) {
       String greeting = "Hello " + name;
       return new ResponseEntity<>(greeting, HttpStatus.OK);
    }
}

复制代码

总结

RESTful 是一种应用架构、而 RESTful Web Service 则为基于 HTTP 协议标准方法的 RESTful 架构实现。

JAX-RSR 是针对 JAVA 语言而制定的 API 标准、它支持 RESTful Web Service 架构及规范。

Java 生态中各厂商提供了符合 JAX-RSR 标准和自家Servlet容器结合的不同实现如 Jersey--Oracle、RESTEasy--Red Hat 、 Apache Cxf--Apache Org 等。

Spring 框架早于 JAX-RSR 标准的制定、它并未原生实现这个规范。而 Spring MVC 模块提供了另一种基于Spring的编程模型来实现 RESTful Web Service 架构。

转载于:https://juejin.im/post/5cfcda2fe51d4510664d16a1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值