Spring Boot与RESTful API
2019独角兽企业重金招聘Python工程师标准>>>
在上一篇Spring Boot开发WEB页面文章中,我们介绍了如何搭建一个有页面的web项目,这一篇我们则着重讲一下Spring Boot对RESTful的支持。
常用注解介绍
首先需要介绍几个常用的注解:
- @Controller 用于标注控制层组件
- @RestController 此注解等同于@Controller+@ResponseBody,返回json数据
- @RequestMapping 映射URL
- @PathVariable 是用来对指定请求的URL路径里面的变量
- @ModelAttribute 1、绑定请求参数到指定对象;2、暴露表单引用对象为模型数据;3、暴露@RequestMapping方法返回值为模型数据
- @RequestParam 用于将请求参数区数据映射到功能处理方法的参数上。
HTTP动词
对于资源的具体操作,由http动词表示,常用的http动词有以下五个(括号里是对应的SQL命令):
- GET(SELETE) 从服务器取出资源(一个或者多个)
- POST(CREATE) 在服务器新建一个资源
- PUT(UPDATE) 在服务器更新资源(客户端提供改变后的完整资源)
- PATCH(UPDATE) 在服务器更新资源(客户端提供改变的属性)
- DELETE(DELETE) 从服务器删除资源
编写简单的RESTful API
定义一个实体bean
public class Book {private String name;private String isbn;private String author;public String getAuthor() {return author;}public String getIsbn() {return isbn;}public String getName() {return name;}public void setAuthor(String author) {this.author = author;}public void setIsbn(String isbn) {this.isbn = isbn;}public void setName(String name) {this.name = name;}
}
编写controller
@RestController
@RequestMapping("/book")
public class BookController {public static Map<String,Book> bookMap = new HashMap<String,Book>();/*** 添加一本书* @param book* @return*/@RequestMapping(value="/",method = RequestMethod.POST)public String postBook (@ModelAttribute Book book){bookMap.put(book.getIsbn(),book);return "SUCCESS";}/*** 查询出所有book集合* @return*/@RequestMapping(value="/",method = RequestMethod.GET)public List<Book> getBookList (){List<Book> bookList = new ArrayList<Book>(bookMap.values());return bookList;}/*** 根据ISBN获取book* @param isbn* @return*/@RequestMapping(value="/{isbn}",method = RequestMethod.GET)public Book getBook(@PathVariable String isbn){Book book = bookMap.get(isbn);return book;}/*** 更新book参数* @param isbn* @param book* @return*/@RequestMapping(value="/{isbn}",method = RequestMethod.PUT)public String putBook(@PathVariable String isbn,@ModelAttribute Book book){Book b = bookMap.get(isbn);b.setAuthor(book.getAuthor());b.setName(book.getName());bookMap.put(isbn,b);return "SUCCESS";}/*** 根据isbn删除book* @param isbn* @return*/@RequestMapping(value="/{isbn}",method = RequestMethod.DELETE)public String deleteBook(@PathVariable String isbn){bookMap.remove(isbn);return "SUCCESS";}
}
至此一个简单的RESTful API就写完了,大家可以通过浏览器插件来验证正确性,此处我们使用单元测试对接口进行验证
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class DemoApplicationTests {private MockMvc mvc;@Beforepublic void setUp() throws Exception {mvc = MockMvcBuilders.standaloneSetup(new BookController()).build();}String json = "[{\"name\":\"三国演义\",\"isbn\":\"1234\",\"author\":\"罗贯中\"}]";String json2 = "{\"name\":\"三国演义12\",\"isbn\":\"1234\",\"author\":\"罗贯中12\"}";@Testpublic void contextLoads() throws Exception {// 测试ControllerRequestBuilder request = null;//添加一本书request = post("/book/").param("name", "三国演义").param("isbn", "1234").param("author", "罗贯中");mvc.perform(request).andExpect(content().string(equalTo("SUCCESS")));//获取书本列表,应该有刚才插入的数据request = get("/book/");mvc.perform(request).andExpect(status().isOk()).andExpect(content().string(equalTo(json)));//更新书名和作者request = put("/book/1234").param("name", "三国演义12").param("author", "罗贯中12");mvc.perform(request).andExpect(content().string(equalTo("SUCCESS")));//获取isbn1234的书,查看是否修改成功request = get("/book/1234");mvc.perform(request).andExpect(content().string(equalTo(json2)));//删除request = delete("/book/1234");mvc.perform(request).andExpect(content().string(equalTo("SUCCESS")));//查询是否删除成功request = get("/book/");mvc.perform(request).andExpect(status().isOk()).andExpect(content().string(equalTo("[]")));}}
至此我们完成了对API的验证,不需要多余的配置,我就完成了Spring MVC的功能,完成了一个简单的RESTful接口。
转载于:https://my.oschina.net/wangxincj/blog/809285
Spring Boot与RESTful API相关推荐
- Spring Boot 通过Restful API,在PostMan 中返回数据
Spring Boot 通过Restful API,在PostMan 中返回数据 资源组 新增 POST/resource_group/ad 请求体:格式:from-data参数:groupName= ...
- Spring Boot集成Restful Api在线文档接口调试工具 Swagger
文章目录 一.Swagger简介 Swagger有什么用? 二.环境准备 三.构建Spring Boot工程 四.引入Swagger依赖 五.编写一个Test控制器 六.配置Swagger 七.最终测 ...
- Spring Boot构建RESTful API与单元测试
首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建 ...
- 使用Spring Boot构建RESTFul服务
每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等.由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想到了使用Spring Boot实现一个简单的RESTFul ...
- Spring Boot 构建RESTful Web服务
Spring Boot 构建RESTful Web服务 本指南将引导您完成使用Spring 创建" Hello World" RESTful Web服务的过程. 你会建立什么 您将 ...
- spring boot开发接口api
spring boot开发接口api 在上一次教了大家怎么去搭建一个自己的后端模板之后,现在和大家分享讨论一下如何开发RestfulApi接口. 首先开发api之前要考虑到后端是需要写api文档的 ...
- 学习笔记-Spring Boot 开发 RESTful Web API(一)
题记: 本篇是Spring Boot 开发学习系列中基础知识学习的一部分,为 RESTful Web API 相关基础知识,为实践操作奠定理论基础. REST不是一个标准,而是一种软件应用架构风格.基 ...
- springboot 集成jpa_基于Spring Boot+JPA Restful 风格的数据
第一章 Restful简介 Restful是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服 务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次, ...
- boot spring 接口接收数据_基于 Spring Boot 实现 Restful 风格接口,实现增删改查功能...
优质文章,及时送达 Spring Boot介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配 ...
最新文章
- PAT1047 编程团体赛 (20 分)
- HTML小知识点积累
- javafx android sdk,JavaFX打包到Android上
- linux du -sh 脚本,Linux之shell脚本(2)
- 刚入行的UI设计师,通过临摹优秀UI KIT作品开始
- android 图片按钮变形,android wrap_content引起的图片变形
- ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)...
- 如何在JavaScript中将字符串的首字母大写?
- sqlite 常用数据类型
- Flutter入门(3)—打包项目[Android]
- OneAPM 技术公开课:北京,北京!
- Java——数据结构与算法
- 前端开发必备,【项目实战】
- python分词工具
- java怎么实现直方图均衡化_直方图均衡化原理与实现
- 新编计算机英语第二版,新编计算机英语-电子教案
- 给宝宝用乳糖酶还在不停地换品牌吗?一文读懂如何正确使用
- win10专业版安装
- CreateThread和_beginthread区别及使用http://blog.csdn.net/wxq1987525/article/details/6620210
- Centos7超级无敌简单的PXE安装系统手动与自动化