注解

@RestController

@RestController 将返回的对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中。绝大部分情况下都是直接以 JSON 形式返回给客户端,(@Controller +@ResponseBody= @RestController)。

@RequestMapping

  • @RequestMapping :上面的示例中没有指定 GET 与 PUT、POST 等,因为@RequestMapping默认映射所有HTTP Action,你可以使用@RequestMapping(method=ActionType)来缩小这个映射。
  • @PostMapping实际上就等价于 @RequestMapping(method = RequestMethod.POST),同样的 @DeleteMapping ,@GetMapping也都一样,常用的 HTTP Action 都有一个这种形式的注解所对应。

    @PathVariable

  • @PathVariable :取url地址中的参数。

    @RequestParam

  • @RequestParam url的查询参数值。

    @RequestBody

    @RequestBody:可以将 HttpRequest body 中的 JSON 类型数据反序列化为合适的 Java 类型。
    ResponseEntity

    @ResponseEntity

    ResponseEntity: 表示整个HTTP Response:状态码,标头和正文内容。我们可以使用它来自定义HTTP Response 的内容。

  1. package com.github.entity;
  2. import lombok.Data;
  3. @Data
  4. public class User {
  5. private int id;
  6. private String name;
  7. }

使用@Data注解可以实现在编译器自动添加set和get函数的效果。该注解是lombok提供的,只需要在pom中引入加入下面的依赖就可以支持

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <version>1.18.10</version>
  5. </dependency>
  1. package com.github.controller;
  2. import com.github.entity.User;
  3. import org.springframework.http.ResponseEntity;
  4. import org.springframework.web.bind.annotation.*;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import java.util.List;
  8. import java.util.stream.Collectors;
  9. @RestController
  10. @RequestMapping("api/v1")
  11. public class UserController {
  12. private List<User> users = new ArrayList<>();
  13. @PostMapping("/user")
  14. public ResponseEntity<List<User>> addUser(@RequestBody User user) {
  15. users.add(user);
  16. return ResponseEntity.ok(users);
  17. }
  18. @DeleteMapping("/user/{id}")
  19. public ResponseEntity deleteUserById(@PathVariable("id") int id) {
  20. Iterator<User> iterator = users.iterator();
  21. while (iterator.hasNext()){
  22. User next = iterator.next();
  23. if (next.getId()==id){
  24. iterator.remove();
  25. }
  26. }
  27. return ResponseEntity.ok(users);
  28. }
  29. @GetMapping("/users")
  30. public ResponseEntity getUsers() {
  31. return ResponseEntity.ok(users);
  32. }
  33. @GetMapping("/user")
  34. public ResponseEntity getUsersByName(@RequestParam("name") String name) {
  35. List<User> collect = users.stream().filter(user -> user.getName().equals(name)).collect(Collectors.toList());
  36. return ResponseEntity.ok(collect);
  37. }
  38. }

增加用户

  1. curl -X POST "http://127.0.0.1:8080/api/v1/user" -d '{"id":1,"name":"ming"}' -H "Content-Type: application/json"
  2. [{"id":1,"name":"ming"}]
  3. curl -X POST "http://127.0.0.1:8080/api/v1/user" -d '{"id":2,"name":"hong"}' -H "Content-Type: application/json"
  4. [{"id":1,"name":"ming"},{"id":2,"name":"hong"}]%

查询用户

  1. curl "http://127.0.0.1:8080/api/v1/users"
  2. [{"id":1,"name":"ming"},{"id":2,"name":"hong"}]%

查询当个用户

  1. curl 'http://127.0.0.1:8080/api/v1/user?name=ming'
  2. [{"id":1,"name":"ming"}]%

删除用户

  1. curl -X DELETE 'http://127.0.0.1:8080/api/v1/user/1'
  2. [{"id":2,"name":"hong"}]