当前位置:   article > 正文

SpringBoot设计RESTful规范接口_springboot restful接口

springboot restful接口

RESTful规范

RESTful是一种约定俗成的接口设计规范,要求后端在开发设计接口的时候遵循对应的原则。前后端开发人员都了解这个规则,能让接口开发更有效率,接口设计也更美观,易于维护。

RESTful规范主要要求了,接口的url地址和请求方式。

主要有五种设计要求:以请求user(用户)数据为例说明一下:

POST /user 创建一个用户

对应数据库的insert操作,往数据库中添加数据时用POST请求

GET /user/{id} 根据id获取某个用户

对应数据库的查询操作,获取数据用GET请求

GET /user 获取用户列表

对应数据库的查询操作,获取数据用GET请求

PUT /user/{id} 修改某个id的用户全部信息

对应数据库的update操作,获取数据用GET请求

PATCH /user/{id} 修改某个id的用户部分信息

对应数据库的update操作,获取数据用GET请求

与PUT请求不同的是,PATCH请求只修改部分字段,比如用户原数据为{"name":"test", "age":18, "gender":0},分别用PUT和PATCH发送修改数据为{“name”:"change","age":null,"gender":null},PUT会把所有数据替换为这个新数据,最终age和gender就为空了,结果和请求的数据一样,而PATCH会根据传输的数据,只替换有值的部分,为空的就跳过了,最终用户的数据{"name":"change", "age":18, "gender":0}

DELETE /user/{id} 删除某个id的用户

删除数据用DELETE请求

DELETE请求是删除某些数据,不过对应数据库的操作未必全是delete,现在系统设计时,多会在表中定义is_delete之类字段,删除只是逻辑删除,并没有真的从数据库中删除掉,对应的还是数据库的update操作。

JAVA代码

看一个例子,我们在SpringBoot的controller里是如何定义接口的

  1. @RestController
  2. @RequestMapping(value = "/user")
  3. public class UserController {
  4. private final UserService userService;
  5. public UserController(UserService userService) {
  6. this.userService = userService;
  7. }
  8. @PostMapping(value = "")
  9. public User create(@RequestBody UserRequestBean bean) {
  10. return userService.create(bean);
  11. }
  12. @GetMapping(value = "/{id}")
  13. public User findById(@PathVariable Long id) {
  14. return userService.findById(id);
  15. }
  16. @GetMapping
  17. public Page<User> list(@RequestParam int page,
  18. @RequestParam int size,
  19. @RequestParam(required = false) String username,
  20. @RequestParam(required = false) Integer maxAge,
  21. @RequestParam(required = false) Integer minAge,
  22. @RequestParam(required = false) Integer gender,
  23. @RequestParam(required = false) String phone,
  24. @RequestParam(required = false) String accessCardNumber,
  25. @RequestParam(required = false) String orderParam,
  26. @RequestParam(required = false) String direction) {
  27. return userService.list(page, size, username, maxAge, minAge, gender, phone, accessCardNumber, orderParam, direction);
  28. }
  29. @PutMapping(value = "/{id}")
  30. public User update(@PathVariable Long id, @RequestBody UserRequestBean bean) {
  31. return userService.update(id, bean);
  32. }
  33. @PatchMapping(value = "/{id}")
  34. public User patch(@PathVariable Long id, @RequestBody UserRequestBean bean) {
  35. return userService.patch(id, bean);
  36. }
  37. @DeleteMapping(value = "/{id}")
  38. public void delete(@PathVariable Long id) {
  39. userService.delete(id);
  40. }
  41. }

给Controller添加注解@RestController,表示这个类是Controller并且会返回实体结构的json格式数据。

@RequestMapping(value="user")配置这个controller的访问url地址前缀为/user,这个类里的具体接口都会在这个url地址的基础上继续添加

@PostMapping(value="")设置接口请求方式为POST,没有配置新的url地址,最终访问url地址为/user

@GetMapping(value="/{id}")设置接口请求方式为GET,访问url地址为/user/{id}

@GetMapping 设置接口请求方式为GET,访问url地址为/user

@PutMapping(value="/{id}")设置接口请求方式为PUT,访问url地址为/user/{id}

@PatchMapping(value="/{id}")设置接口请求方式为PATCH,访问url地址为/user/{id}

@DeleteMapping(value="/{id}")设置接口请求方式为DELETE,访问url地址为/user/{id}

测试接口

 

测试项目地址 HelloSpringBoot: SpringBoot测试项目

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号