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. 如何优雅地展示机器学习项目!
  2. 网页html是什么语言程序,html是什么
  3. 小波变换在语音信号处理的应用
  4. linux 编程博客,Linux系统编程博客参考
  5. 加载中...loading... 图片_搞笑图片:小子这就是你单身的原因...
  6. eclipse的tomcat运行mave web项目
  7. 漫谈广告竞价模式(五)
  8. 我将其名称作为字符串时如何执行JavaScript函数
  9. G-Sensor 校准标准
  10. 树和二叉树总结(三)—BST二叉排序树
  11. 羽毛球:东南大学vs南京大学
  12. 【Oracle11gR2 | 学习】plsql dev存储过程的使用、存储函数、out类型的使用
  13. 爬取豆瓣网新书传递信息,关系型数据库的储存
  14. 使用WSS的Lists.UpdateListItems()方法之被截断的CAML
  15. 医学统计学笔记之分布
  16. java中string是什么意思_在java中String...是什么意思
  17. java effective
  18. android 入门教程
  19. Stream流-分组操作
  20. 简单实现敏感词过滤功能

热门文章

  1. 此计算机无法设置密码,电脑该怎么设置密码
  2. windows窗口移动到屏幕外,找回方法
  3. 微信广告任务平台源码运营版
  4. Spring Boot开发框架优点诠释
  5. 灵活使用DataView
  6. 在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好。
  7. 3个检测浏览器User-Agent信息的网站
  8. 解决压缩包跨平台解压缩的中文乱码问题
  9. 了解下JavaScript中的prototype
  10. __call、__set 和 __get的用法