当前位置: 首页 > news >正文

@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来接受参数

http://www.lryc.cn/news/472944.html

相关文章:

  • unity 中使用zeroMq和Mqtt 进行通讯
  • 四、k8s快速入门之Kubernetes资源清单
  • 掌握ElasticSearch(六):分析过程
  • 【设计模式】使用python 实践框架设计
  • Apache paimon-CDC
  • 如何分析算法的执行效率和资源消耗
  • 提示工程(Prompt Engineering)指南(进阶篇)
  • 音视频入门基础:FLV专题(19)——FFmpeg源码中,解码Audio Tag的AudioTagHeader,并提取AUDIODATA的实现
  • 前端零基础入门到上班:【Day3】从零开始构建网页骨架HTML
  • 字符脱敏工具类
  • 【jvm】jvm对象都分配在堆上吗
  • @AutoWired和 @Resource原理深度分析!
  • C++设计模式创建型模式———原型模式
  • 重学SpringBoot3-Spring WebFlux之SSE服务器发送事件
  • YOLO即插即用模块---AgentAttention
  • 探索开源语音识别的未来:高效利用先进的自动语音识别技术20241030
  • 学习路之TP6--workman安装
  • .NET内网实战:通过白名单文件反序列化漏洞绕过UAC
  • AI Agents - 自动化项目:计划、评估和分配
  • Git的.gitignore文件
  • 网站安全,WAF网站保护暴力破解
  • 深度学习:梯度下降算法简介
  • SparkSQL整合Hive后,如何启动hiveserver2服务
  • 前端路由如何从0开始配置?vue-router 的使用
  • Java中的运算符【与C语言的区别】
  • 二、基础语法
  • DB-GPT系列(一):DB-GPT能帮你做什么?
  • 【Python各个击破】numpy
  • 【STM32 Blue Pill编程实例】-4位7段数码管使用
  • [进阶]java基础之集合(三)数据结构