注解
@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
- 
@RequestParam
 - 
@RequestBody
@RequestBody:可以将 HttpRequest body 中的 JSON 类型数据反序列化为合适的 Java 类型。
ResponseEntity@ResponseEntity
ResponseEntity: 表示整个HTTP Response:状态码,标头和正文内容。我们可以使用它来自定义HTTP Response 的内容。
 
package com.github.entity;import lombok.Data;@Datapublic class User {private int id;private String name;}
使用@Data注解可以实现在编译器自动添加set和get函数的效果。该注解是lombok提供的,只需要在pom中引入加入下面的依赖就可以支持
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency>
package com.github.controller;import com.github.entity.User;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.*;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.stream.Collectors;@RestController@RequestMapping("api/v1")public class UserController {private List<User> users = new ArrayList<>();@PostMapping("/user")public ResponseEntity<List<User>> addUser(@RequestBody User user) {users.add(user);return ResponseEntity.ok(users);}@DeleteMapping("/user/{id}")public ResponseEntity deleteUserById(@PathVariable("id") int id) {Iterator<User> iterator = users.iterator();while (iterator.hasNext()){User next = iterator.next();if (next.getId()==id){iterator.remove();}}return ResponseEntity.ok(users);}@GetMapping("/users")public ResponseEntity getUsers() {return ResponseEntity.ok(users);}@GetMapping("/user")public ResponseEntity getUsersByName(@RequestParam("name") String name) {List<User> collect = users.stream().filter(user -> user.getName().equals(name)).collect(Collectors.toList());return ResponseEntity.ok(collect);}}
增加用户
✗ curl -X POST "http://127.0.0.1:8080/api/v1/user" -d '{"id":1,"name":"ming"}' -H "Content-Type: application/json"[{"id":1,"name":"ming"}]curl -X POST "http://127.0.0.1:8080/api/v1/user" -d '{"id":2,"name":"hong"}' -H "Content-Type: application/json"[{"id":1,"name":"ming"},{"id":2,"name":"hong"}]%
查询用户
curl "http://127.0.0.1:8080/api/v1/users"[{"id":1,"name":"ming"},{"id":2,"name":"hong"}]%
查询当个用户
curl 'http://127.0.0.1:8080/api/v1/user?name=ming'[{"id":1,"name":"ming"}]%
删除用户
curl -X DELETE 'http://127.0.0.1:8080/api/v1/user/1'[{"id":2,"name":"hong"}]
