注解
@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;
@Data
public 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"}]