Spring Boot菜鸟示例——Post
Http Get请求与Post简单介绍
Get请求参数一般放在url或路径里,例如http://localhost:8888/hello/hiyj/table?key1=value1&key2=value2
,但是也不是不能放在Body里,Body就是上图的请求数据部分,路径里看不到,有了一些一眼看穿数据的门槛。Post请求与Get请求很多地方相通,最大的不同,Post支持更大的请求数据携带。
起手式,一样的项目结构和请求注解
lombok插件
//好东西,可以省的自己写Get和Set还有toSting函数,需要添加依赖
import lombok.*;
添加Post
请求接口整体代码
package cn.hiyj.post.postex.controller;
//好东西,可以省的自己写Get和Set还有toSting函数,需要添加依赖
import lombok.*;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/hello")
public class HelloWorldController {
// Post请求注解,可添加额外注解参数
@PostMapping
public String hello() {
return "You use Post request me!";
}
// Post 与 Get 请求注解部分功能一致
// {path}对应这个位置的路径,可以赋值给赋值@PathVariable修饰的参数,默认是变量名
// @RequestParam获取的是请求方法里的参数,例如http://localhost:8080/hello/get?name=hiyj&sex=boy
// 那么可以生成{"name":"hiyj","sex":"boy"}内容的Map
@PostMapping("{path}/table")
public String path(@PathVariable String path,
@RequestParam Map<String, String> table) {
return "You use Post request me! path: " + path + "\ntable: " + table.toString();
}
// 写的这的原因是方便在这里写示例代码,记得合理划分自己的项目结构
// @Data自动生成了隐藏的get和set还有toString函数
@Data
class User {
private String name;
private String sex;
}
// 可以将http请求中的Body赋值到user
@PostMapping("set")
public String set(@RequestBody User user) {
return "You use Post request me! User: " + user.toString();
}
}
运行后CMD测试
curl -X POST http://localhost:8888/hello
curl -X POST "http://localhost:8888/hello/hiyj/table?key1=value1&key2=value2"
curl -X POST -H "Content-Type: application/json" -d"{\"name\":\"hiyj\",\"sex\": \"boy\"}" http://localhost:8888/hello/set