SpringBoot基础教程2-1-1 搭建RESTful风格Web服务
2018-07-06 13:13
597 查看
1. 概述
RESTful架构风格规定,数据的元操作,即
CRUD(增删查改)操作,分别对应于
HTTP方法:
GET用来获取资源,
POST用来新建资源(也可以用于更新资源),
PUT用来更新资源,
DELETE用来删除资源,这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作。
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
DELETE(DELETE):从服务器删除资源。
本文中例子RESTful API具体设计如下:
2. 本节重点
RESTful风格介绍使用SpringBoot,快速搭建RESTful风格Web服务
3. 工具
IntelliJ IDEA,直接官网下载,Ultimate版本,傻瓜式安装Maven,IntelliJ IDEA自带无需安装
Springboot ,版本2.0.3.RELEASE
Postman,测试工具,下载地址(密码:sc1e),解压无需安装
4. 代码分析
新建User实体类public class User { private Integer userId; private String name; private Integer age; private String address; // 省略 get set方法 }
快捷键Alt+Insert,可以生成构造器/Getter/Setter等
新建DAO层,查询数据库,这里为了简单用Map模拟
@Component public class UserDao { // 数据层:查询数据库,这里为了简单用Map模拟 private static Integer count = 0; // 线程安全的Map private static Map<Integer, User> userMap = Collections.synchronizedMap(new HashMap<>()); static { // 静态代码块,第一次初始化类时被调用 // 初始化userMap userMap.put(++count, User.builder().userId(count).name("Mkeeper").age(28).address("wuhan").build()); userMap.put(++count, User.builder().userId(count).name("Jam").age(22).address("beijing").build()); userMap.put(++count, User.builder().userId(count).name("Li").age(18).address("shanghai").build()); } public User findByUserId(Integer userId){ return userMap.get(userId); } public List<User> findList(){ return new ArrayList<>(userMap.values()); } public User addUser(User user){ user.setUserId(++count); userMap.put(count, user); return user; } public User updateUser(User user){ userMap.put(user.getUserId(), user); return user; } public boolean deleteByUserId(Integer userId){ userMap.remove(userId); return true; } }
新建service层,包括接口与实现
public interface UserService { // 服务层:处理业务逻辑 User findByUserId(Integer userId); List<User> findList(); User addUser(User user); User updateUser(User user); boolean deleteByUserId(Integer userId); }
@Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public User findByUserId(Integer userId) { return userDao.findByUserId(userId); } @Override public List<User> findList() { return userDao.findList(); } @Override public User addUser(User user) { return userDao.addUser(user); } @Override public User updateUser(User user) { return userDao.updateUser(user); } @Override public boolean deleteByUserId(Integer userId) { return userDao.deleteByUserId(userId); } }
新建操作user的接口
@RequestMapping("/users") @RestController public class UserController { // 入口:处理相应URL @Autowired private UserService userService; @GetMapping("/{userId}") public User findByUserId(@PathVariable Integer userId){ // 处理“/users/{userId}”的Get请求,获取user信息 // url中的id可通过@PathVariable绑定到函数的参数中 return userService.findByUserId(userId); } @GetMapping("/") public List<User> findList(){ // 处理“/users/”的Get请求,获取用户列表信息 // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 return userService.findList(); } @PostMapping("/") public User addUser(@RequestBody User user){ // 处理"/users/"的POST请求,用来创建User // 除了@RequestBody绑定参数之外,还可以通过@RequestParam从页面中传递参数 return userService.addUser(user); } @PutMapping("/") public User updateUser(@RequestBody User user){ // 处理"/users/{id}"的PUT请求,用来更新User信息 return userService.updateUser(user); } @DeleteMapping("/{userId}") public boolean deleteByUserId(@PathVariable Integer userId){ // 处理"/users/{id}"的DELETE请求,用来删除User return userService.deleteByUserId(userId); } }
推荐一个查询URL的快捷键:Ctrl+Shift+Alt+N,然后输入url,可以快速查找对应Controller;该快捷键还可以查方法。
测试结果,这里只展示新增的测试结果,其他接口测试还请读者自行实践
5. 工程目录
6. 结束语
微服务盛行,RESTful风格接口大行其道,实践后,才知道其实不复杂,原理是一样的。有任何建议,欢迎留言探讨,本文源码。欢迎关注博主公众号:
Java十分钟
相关文章推荐
- spring4之搭建restful风格的web服务
- 搭建简单的Restful风格的web服务
- SpringBoot入门-快速搭建web服务
- java restful风格服务报错:javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException
- 通过Jersey客户端API调用RestFul风格的Web服务
- Web基础之httpd服务搭建(一)
- (五)CXF整合Spring发布RESTful风格的Web服务
- linux学习笔记-工程师技术:HTTP服务基础(Web服务基本搭建)、网页内容访问、安全Web服务、动态网站的部署
- Eclipse, tomcat7.0, maven,git 构建RESTful风格的web 工程(搭建环境)
- RESTful风格的Web服务框架 Swagger
- Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
- 通过Jersey客户端API调用RestFul风格的Web服务
- RESTful Web 服务:教程
- spring-boot快速搭建web应用教程一-基础环境搭建
- Python web 框架之 Django 基础搭建服务
- kangle web服务+easypanel主机控制面板快速搭建网站和数据库以及管理空间详细教程
- RESTful风格的Web服务框架:Swagger
- 用python创建一个简单的restful风格的web服务应用
- 通过Jersey客户端API调用RestFul风格的Web服务
- SELENIUM中文教程之Selenium+ Webdriver+JAVA 自动化测试 环境搭建( SELENIUM自动化测试入门基础)