一、Rest的基本原理 (表述性状态转移) rest 与 rpc没有任何关系。RPC是面向服务的,并关注于行为和动作,而REST是面向资源的。
1: 表述性,资源实际上可以用各种形式来进行表述。xml,json,html
2: 状态当使用REST的时候,我们更关注资源的状态
3: REST涉及转移资源数据,它以表述性形式从一个应用转移到了一个应用
总结:rest就是将资源的状态以最合适的形式从服务器端转移到客户端。
二、spring 如何支持rest :
1、控制器可以处理所有的http 方法 , get、put、delete、post
2、新的pathvariable 注解使得控制器能处理参数化的URL
3、spring的表单绑定jsp标签库的<form:form>标签以及新的HiddenHttpMethondFilter, 使得通过html表单提交put 和 delete 请求成为可能。
4、通过使用spring的视图和视图解析器,资源可以以各种形式进行表述。xml,json,atom和rss
5、可以使用新的contentnegotiatingviewresolver 来选择最合适客户端
6、基于视图的渲染可以使用@responsebody注解
7、新的@responsebody注解以及httpmethodconverter实现可以传入http数据转化为控制器处理方法
8、resttemplate简化了客户端对rest资源的使用。
restful 和 restless 的url 和 控制器
rest less 的 url 和 控制器
1、restless的url : http://localhost:8080/Spitter/displaySpittle.htm?id=123
2、
@Controller
@RequestMapping(“/displaySpitle.html”)
public class DisplaySpittleController {
private final SpitterService spitterService ;
@Inject
public DisplaySpittleController(SpitterService spitterService){
this. spitterService = spitterService
}
@RequestMapping(method = RequestMethod.GET)
public string show spittle(@RequestParam(“id”) long id , Model model)
{
model.addAttribute(spitterService.getSpittleByid(id))
return “spitter/view”
}
}
restful的url和 控制器
1、http://localhost:8080/Spitter/spittles/123
2、
@Controller
@RequestMapping(“/spittles”)
public class SpittleController {
private SpitterService spitterService;
@Inject
public SpittleController(SpitterService spitterService){
this.spitterService = spitterService;
}
@RequestMapping(value = “/{id}” method = RequestMethod.GET)
public String getSpittle(@PathVariable(“id”) long id , Model model){
model.addAttribute(spitterService.getSpittleById(id));
return “spittles/view”
}
}
rest 动作
1、对于任意i给定的资源,最常见的操作是在服务器上对资源进行创建,索引,更新,删除
2、每个http方法具有两个特性,安全性和幂等性。
3、http提供了多个方法来操作资源
安全: 不改变资源状态
幂等: 一次请求和多次请求具有相同的作用
GET方法: 执行读取操作。是安全,是幂等。
POST方法:通常用于更新和创建操作。不安全,不幂等。
PUT方法: 通常用于更新和创建操作。不安全,幂等
DELELE方法: 删除操作,不安全,幂等
OPTIONS方法: 请求与服务器通信可用的选项,是安全,是幂等
HEAD方法: 类似GET,只返回头部信息 是安全,是幂等
TRACE 方法: 将请求体的内容 是安全,是幂等
4、使用PUT更新资源
get 请求将资源的状态从服务器转移到客户端,而put将资源的状态从客户端转移到服务器上。
@RequestMapping(value="/{id}",method=RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void putSpittle(@PathVariable("id") long id , @Valid Spittle spittle){
spitterService.saveSpittle(spittle);
}
5、处理Delete请求: RequestMethod.delete
6、使用post创建资源 : 可以完成其他http方法无法完成的工作
方法的requestmapping没有value的时候,匹配类的value
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody Spittle createSpittle(@Valid Spittle spittle,BindingResult result,HttpServleResponse response){
if(result.hasErrors()){
throw new BindException();
}
spitterService.saveSpittle(spittle);
response.setHeader("Location"," /spittles/" + spittle.getId()+"");
return spittle
}
相关推荐
Spring REST Docs。 官网 Spring REST Docs API。 Spring REST Docs 开发文档。
spring rest 增删改查(put\delete\post\get)简单示例详细讲解,亲测可用。spring rest 增删改查(put\delete\post\get)简单示例详细讲解,亲测可用。spring rest 增删改查(put\delete\post\get)简单示例详细...
Spring REST是使用Spring框架设计和开发RESTful API的实用指南。本书通过深入探索REST应用设计原则和最佳实践,引导读者学习构建REST应用的整个过程。本书首先提供REST、HTTP和Web基础设施的简要介绍,然后详细介绍...
spring rest doc 例子,根据里面的例子,配合你的项目我相信能很快就用的上哦。尝试着用用吧。 spring rest doc 例子,根据里面的例子,配合你的项目我相信能很快就用的上哦。尝试着用用吧。
标题中的"jersey+spring rest webservice web maven"是一个基于Java开发的RESTful Web服务架构,它结合了几个关键的技术组件。让我们深入探讨每个部分: 1. **Jersey**: Jersey是Java RESTful Web服务(JAX-RS)...
`RestTemplate`是Spring提供的一种简单易用的HTTP客户端工具,用于发起HTTP请求并与REST服务进行交互。本文将深入探讨`RestTemplate`的使用方法,以及如何在实际项目中有效地利用它。 首先,`RestTemplate`是Spring...
Spring Rest2ts生成器 spring-rest2ts-generator基于Spring MVC REST控制器和HTTP请求和响应的数据模型生成TypeScript代码。 spring-rest2ts-generator从Spring MVC开始,但是我们注意到它也很容易支持JAX-RS注释,...
Restdocs规范生成支持用法首先转到项目,然后按照说明设置Spring REST Docs扩展。 该扩展名将为您记录的每个resource.json生成resource.json文件。 您还将注意到,该项目提供了gradle插件,可用于读取所有resource....
**Spring 3.0 REST 实例详解** 在现代Web开发中,REST(Representational State Transfer,表述性状态转移)已经成为构建API的首选架构风格。Spring框架,作为一个强大的Java企业级应用开发框架,从3.0版本开始就...
“Spring REST Book”的源代码,Apress Publishing 概述 此存储库包含 [Spring REST] ( ) 书中引用的源代码。 组织 源代码由各个章节组织。 在 ChapterX 文件夹中可以找到与每个章节对应的代码,其中 X 代表章节编号...
本文主要介绍了使用Spring框架构建REST API的全过程,内容包括了从基础的Spring Web应用搭建,到使用Java配置,再到通过Spring Security进行安全认证和授权,以及REST API的其他重要特性,例如:使用HTTP消息转换器...
该示例项目将使用Spring REST后端和AngularJS前端。 问题描述-多个用户登录系统。 它们具有通知窗口(消息控制台)。 基于事件,将根据业务逻辑从后端创建JMS消息并将其发布到Queue或Topic。 有些事件必须传递到用户...
在"spring mvc rest基础学习demo"中,我们将深入探讨如何使用Spring MVC构建RESTful API。 REST(Representational State Transfer,表现层状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以...
用于创建Spring Rest Web服务的样板项目(Java注释)。 该项目包含开发基于Spring的Rest Web服务的所有基本要求。 这项工作正在进行中,我将继续使用其他功能(例如缓存,安全性,身份验证/授权等)来更新项目。
在这个小例子中,我们将探讨如何使用Spring MVC来实现REST接口。 首先,让我们理解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求,然后根据请求映射找到相应的Controller...
Spring Auto REST文件 扩展的目的是帮助您减少编写工作-代码和文档。 您仍然可以获得与Spring REST Docs本身相同的文档。 主要好处是减少了编写并使文档更接近代码,从而提高了文档的可维护性。 在Spring REST ...
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...