你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!

牵弘
• 阅读 117

Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

在 Restful 风格中,用户请求的 url 使用同一个 url 而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。

SpringMVC Restful 风格 url 配置实现的方式

SpringMVC 的 resturl 是通过 @RequestMapping 及 @PathVariable annotation 提供的,通过如 @RequestMapping(value="/blog /{id}",method=RequestMethod.DELETE) 即可处理 /blog/1 的 delete 请求。

  • GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的 方式。
  • POST(CREATE):在服务器端新建一个资源,调用 insert 操作。
  • PUT(UPDATE):在服务器端更新资源,调用 update 操作。
  • PATCH(UPDATE):在服务器端更新资源(客户端提供改变的属性)。(目前 jdk7 未实现,tomcat7 不支持)。
  • DELETE(DELETE):从服务器端删除资源,调用 delete 语句。

案例实操

Get 请求配置

/**
*restful-->get 请求 执行查询操作
* @param id
* @return
*/
@RequestMapping(value="queryAccountById02/{id}",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById(@PathVariable Integer id){
 MessageModel messageModel=new MessageModel();
 if(null==id){
 messageModel.setCode(300);
 messageModel.setMsg("参数非法!");
 return messageModel;
 }
 messageModel.setResult(accountService.queryById(id));
 return messageModel; 
}

Post 请求配置


/**
* restful-->post 请求执行添加操作
* @param id
* @param aname
* @return
*/
@RequestMapping(value="saveAccount",method=RequestMethod.POST,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById04(@RequestBody Account account){
 MessageModel messageModel=new MessageModel();
 try {
 accountService.saveOrUpdateAccount(account);
 } catch (ParamsException e) { e.printStackTrace();
 messageModel.setCode(e.getErrorCode());
 messageModel.setMsg(e.getErrorMsg());
 }catch (Exception e) { e.printStackTrace();
 messageModel.setCode(300);
 messageModel.setMsg("操作失败!");
 }
 return messageModel; 
}

Put 请求配置


/**
* restful-->put 请求执行更新操作
* @param id
* @param account
* @return
*/
@RequestMapping(value="update/{id}",method=RequestMethod.PUT,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById04(@PathVariable Integer id,@RequestBody Account account){
 MessageModel messageModel=new MessageModel();
 try {
 accountService.saveOrUpdateAccount(account);
 } catch (ParamsException e) { e.printStackTrace();
 messageModel.setCode(e.getErrorCode());
 messageModel.setMsg(e.getErrorMsg());
 }catch (Exception e) { e.printStackTrace();
 messageModel.setCode(300);
 messageModel.setMsg("操作失败!");
 }
 return messageModel; 
}

Delete 请求配置


 /**
 * restful-->delete 请求 执行删除操作
 * @param id
 * @return
 */
@RequestMapping(value="deleteAccountById/{id}",method=RequestMethod.DELETE,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public MessageModel queryAccountById05(@PathVariable Integer id){
 MessageModel messageModel=new MessageModel();
 try {
 accountService.deleteAccountById(id);
 } catch (ParamsException e) { e.printStackTrace();
 messageModel.setCode(e.getErrorCode());
 messageModel.setMsg(e.getErrorMsg());
 }catch (Exception e) { e.printStackTrace();
 messageModel.setCode(300);
 messageModel.setMsg("操作失败!");
 }
 return messageModel;
}

扩展~REST

REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
REST架构指导方案
REST架构指导方案\TOC\何为REST在2014年之后,社区中关于RESTFUL风格的文章开始渐渐多起,大多数RESTFUL的文章都是在阐述一种HTTPURL路径的写法风格。简单总结来说,这些文章归纳的点主要是:1.URL路径应该是名词而非动词。2.通过HTTP几个动词:GET,POST
Easter79 Easter79
4年前
springboot2.0入门(三)
一、RESTFul风格API  1、优点:   1.)看Url就知道要什么资源2.)看httpmethod就知道针对资源干什么3.)看httpstatuscode就知道结果如何!(https://img2018.cnblogs.com/blog/1675975/201910/1675975201910041339307
认知篇:CQRS架构模式的本质
CQRS只是一种非常简单的模式(pattern),CQRS本身并不是一种架构风格,和最终一致性/消息/读写分离/事件溯源/DDD等没有必然的联系,它最大优势是给我们带来更多的架构属性选择
wanQQ wanQQ
4年前
restful 风格操作es 学习
restful风格操作es|method|url地址|描述||::|::|::||PUT|host:port/索引名/类型名/文档ID|创建文档(指定文档ID)||POST|ho
Stella981 Stella981
4年前
Spring Cloud 与 Dubbo 对比整理(2)
一般初期公司需要面对非常复杂的业务场景,而且随着业务的发展,变化的可能性非常高。所以在微服务架构设计之初,我们就期望我们的微服务体系能:不绑定到特定的框架、语言服务最好是Restful风格足够简单,容易落地,将来能扩展和Docker相容性好目前常见的微服务相关框架:Dubbo、DubboXS
Easter79 Easter79
4年前
SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
一、文章分类1、入门基础SpringBoot2:环境搭建和RestFul风格接口(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzU4Njg0MzYwNw%3D%3D%26mid%3D2
Stella981 Stella981
4年前
RESTful API 设计实践
RESTfulAPI为网络应用程序设计提供了一套统一、合理的风格。它只是一种风格,而不是标准,所以也就没有一套统一的标准去规范化这些设计,本文从实践的角度出发,讨论RESTfulAPI设计上的一些细节,探讨如何设计出一套好用、合理、精炼的API。版本按照RESTfulAPI的风格,不同版本的API应该是同一种资源的不同表现
Stella981 Stella981
4年前
Spring Boot2.0 整合mybatis、分页插件、druid
前言本文主要是针对SpringBoot2.0.2版本,实现整合mybatis、分页插件、druid等组件,实现完整的web服务,提供restful风格接口。SpringBoot集成MyBatis有两种方式,一种简单的方式就是使用MyBatis官方提供的:一、mybatisspringbootstarter(本文讲解的)二、
Stella981 Stella981
4年前
SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
一、文章分类1、入门基础SpringBoot2:环境搭建和RestFul风格接口(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzU4Njg0MzYwNw%3D%3D%26mid%3D2
Wesley13 Wesley13
4年前
Java几种常用的断言风格你怎么选?
日常工作中,不管你是写UnitTest,还是采用TDD的编程方式进行开发,都会遇到断言。而断言的风格常见的会有Assert、BDD风格,对于这些常见的断言风格你怎么选择呢?01Assert风格JUnit中提供了这样的assert断言风格,例如:@Test(https://my.oschina.net/azi
Stella981 Stella981
4年前
Jersey采用模板Freemarker输出
简介首先来说一下什么是jersey,他是实现了restful风格的其中一个框架,当然除了jersey还有其他的,例如apacheaxis2(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Faxis.apache.org%2Faxis2%2Fjava%2Fcore%2