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相关推荐

  1. Spring Boot 通过Restful API,在PostMan 中返回数据

    Spring Boot 通过Restful API,在PostMan 中返回数据 资源组 新增 POST/resource_group/ad 请求体:格式:from-data参数:groupName= ...

  2. Spring Boot集成Restful Api在线文档接口调试工具 Swagger

    文章目录 一.Swagger简介 Swagger有什么用? 二.环境准备 三.构建Spring Boot工程 四.引入Swagger依赖 五.编写一个Test控制器 六.配置Swagger 七.最终测 ...

  3. Spring Boot构建RESTful API与单元测试

    首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建 ...

  4. 使用Spring Boot构建RESTFul服务

    每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等.由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想到了使用Spring Boot实现一个简单的RESTFul ...

  5. Spring Boot 构建RESTful Web服务

    Spring Boot 构建RESTful Web服务 本指南将引导您完成使用Spring 创建" Hello World" RESTful Web服务的过程. 你会建立什么 您将 ...

  6. spring boot开发接口api

    spring boot开发接口api ​ 在上一次教了大家怎么去搭建一个自己的后端模板之后,现在和大家分享讨论一下如何开发RestfulApi接口. 首先开发api之前要考虑到后端是需要写api文档的 ...

  7. 学习笔记-Spring Boot 开发 RESTful Web API(一)

    题记: 本篇是Spring Boot 开发学习系列中基础知识学习的一部分,为 RESTful Web API 相关基础知识,为实践操作奠定理论基础. REST不是一个标准,而是一种软件应用架构风格.基 ...

  8. springboot 集成jpa_基于Spring Boot+JPA Restful 风格的数据

    第一章 Restful简介 Restful是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服 务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次, ...

  9. boot spring 接口接收数据_基于 Spring Boot 实现 Restful 风格接口,实现增删改查功能...

    优质文章,及时送达 Spring Boot介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配 ...

最新文章

  1. PAT1047 编程团体赛 (20 分)
  2. HTML小知识点积累
  3. javafx android sdk,JavaFX打包到Android上
  4. linux du -sh 脚本,Linux之shell脚本(2)
  5. 刚入行的UI设计师,通过临摹优秀UI KIT作品开始
  6. android 图片按钮变形,android wrap_content引起的图片变形
  7. ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)...
  8. 如何在JavaScript中将字符串的首字母大写?
  9. sqlite 常用数据类型
  10. Flutter入门(3)—打包项目[Android]
  11. OneAPM 技术公开课:北京,北京!
  12. Java——数据结构与算法
  13. 前端开发必备,【项目实战】
  14. python分词工具
  15. java怎么实现直方图均衡化_直方图均衡化原理与实现
  16. 新编计算机英语第二版,新编计算机英语-电子教案
  17. 给宝宝用乳糖酶还在不停地换品牌吗?一文读懂如何正确使用
  18. win10专业版安装
  19. CreateThread和_beginthread区别及使用http://blog.csdn.net/wxq1987525/article/details/6620210
  20. Centos7超级无敌简单的PXE安装系统手动与自动化

热门文章

  1. WordPress主题:zibll3.3完美绿色版 子比主题
  2. 非空验证方法(多值)和BindingResult提示验证信息
  3. Spring Cloud微服务之子模块的创建(二)
  4. 进一步理解CSS浮动与清除浮动
  5. 在Ubuntu上安装mongoDB
  6. 跨浏览器兼容的HTML5视频音频播放器
  7. linux: chmod,chown命令详解
  8. linux命令之grep 命令
  9. AviSynth——强大的视频文件后期处理工具
  10. 常用的Linux操作系统