@DeleteMapping和@PostMapping和@GetMapping和Content-Type使用记录
代码例子,有注释大家可以自己试一下
@RestController
@RequestMapping(value = "demo")
public class TestController {
//Content-Type:application/x-www-form-urlencoded;表单提交form-data
@PostMapping("/demo1")
public String test1(@RequestParam("id") Integer id,@RequestParam("name") String name) {
System.out.println("test1......");
return Integer.valueOf(id) + ":" + name;
}
//Content-Type:application/x-www-form-urlencoded
@PostMapping("/demo2")
public String test2(DemoUser demoUser) {
System.out.println("test2......");
return Integer.valueOf(demoUser.getId()) + ":" + demoUser.getName();
}
//Content-Type:application/json
@PostMapping("/demo3")
public String test3(@RequestBody DemoUser demoUser) {
System.out.println("test3......");
return Integer.valueOf(demoUser.getId()) + ":" + demoUser.getName();
}
//Content-Type:application/x-www-form-urlencoded;form-data表单;application/json(用@RequestBody接收)都可以
@DeleteMapping("/demo4")
public String test4(@RequestParam("id") Integer id,@RequestParam("name") String name) {
System.out.println("test4......");
return Integer.valueOf(id) + ":" + name;
}
//http:localhost:8080/demo/1
@GetMapping("/{id}")
public String test5(@PathVariable("id") Integer id) {
System.out.println("test5....");
return String.valueOf(id);
}
//application/json
@PostMapping("/demo6")
public String test6(@RequestBody Map<String,Object> map) {
System.out.println("test6...............");
return map.get("id") + ":" + map.get("name");
}
}
@PutMapping
后端例子:
@PutMapping
public AjaxResult edit(@RequestBody CourseInfo courseInfo){
return toAjax(courseService.updateCourse(courseInfo))
}
前端例子:
export function updateCourse(data){
return request({
url:'/course',
method:'put',
data:data,
})
}
@DeleteMapping
后端例子:
@DeleteMapping("/{ids}")
public AjaxResult delCourse(@PathVariable Long []ids){
return toAjax(courseService.delCourse(ids));
}
前端例子:
export function delCourse(id) {
return request({
url:'/course/'+id,
method:'delete'
})
}
<a th:href="@{/test/get}">get请求</a><br>
// 标记这个类是控制器
@Controller
// 规定浏览器url访问路径,严格区分大小写,不能存在相同的路径名,可以加 / ,也可以不加 /
@RequestMapping("/test")
public class HelloController {
@RequestMapping("get")
@ResponseBody // 接受请求,响应JSON串
public String show() {
return "123";
}
}
POST表单提交
<!--post提交-->
<form th:action="@{/test/post}" method="post">
用户名:<input type="text" name="username">
<input type="submit" value="添加信息">
</form>
<!--post提交文件-->
<form th:action="@{/test/up}" method="post" enctype="multipart/form-data">
头像:<input type="file" name="photo"><br>
<input type="submit" value="上传">
</form>
@Controller
@ResponseBody
@RequestMapping("/test")
public class HelloController {
@RequestMapping("post")
// @RequestParam:绑定形参的名字和请求参数的名字一致
public String show(@RequestParam("username")String name) {
return "用户名:"+name;
}
}
@RequestParam:绑定形参(后端)的名字和请求参数(前端)的名字一致
import qs from 'qs';
const data = { 'bar': 123 };
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options);
var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
RESTful风格请求
1、RESTful风格格式
http://localhost:8080/username/password/age http://localhost:8080/张三/123123/20
2、四种基本请求形式
GET:查询
POST:新增
PUT:更新
DELETE:删除
3、注解
@PathVariable
在参数中使用
与 @RequestMapping 搭配使用,映射路径
例:{id} 对应 @PathVariable Integer id
4、RESTful访问要求
在同一个地址下,通过不同的请求方法来决定哪个访问行为
通过请求方式决定访问的资源
5、代码案例
5.1、GET
<a th:href="@{/user}">查询所有的用户信息</a><br>
@RestController
public class Test(){
@GetMapping("/user")
public String getAllUser() {
System.out.println("查询所有用户信息 --> /user --> get");
return "success";
}
}
5.2、POST
<form th:action="@{/user}" method="post">
<input type="submit" value="添加用户信息">
</form>
@RestController
public class Test(){
@PostMapping("/user")
public String insertUser() {
System.out.println("添加用户信息 --> /user --> post");
return "success";
}
}
5.3、PUT
<form th:action="@{/user}" method="post">
<!--用来转换请求方式的,hidden隐藏域,_method必须这么写,put请求方式-->
<input type="hidden" name="_method" value="put">
<input type="submit" value="修改用户信息">
</form>
@RestController
public class Test(){
@PutMapping("/user")
public String updateUser() {
System.out.println("修改用户信息 --> /user --> put");
return "success";
}
}
5.4、DELETE
<form th:action="@{/user/1}" method="post">
<!--用来转换请求方式的,hidden隐藏域,_method必须这么写,delete请求方式-->
<input type="hidden" name="_method" value="delete">
<input type="submit" value="删除用户信息">
</form>
@RestController
public class Test(){
@DeleteMapping("/user/{id}")
public String deleteUser(@PathVariable("id") Integer id) {
System.out.println("删除用户信息 --> /user/" + id + " --> delete");
return "success";
}
}
content-type,表示你前端用那种方式传参。
如果application/json使用json传参,那么你后台就需要用@RequstBody来接受参数。
如果用form-data表单方式传参,那么你后台可以直接用一个vo对象接收,或者你直接使用@RequestParam参数来接受
最后一个例子中,http:localhost:8080/demo/{id}–这种方式传参,你需要@PathVariable来接受参数