当你的java方法是这样定义的
@PostMapping("/rePushMedicalRecord") public String rePushMedicalRecord(@RequestParam("topicId") String topicId){
}
参数是@RequestParam接收,则请求时需要用application/x-www-form-urlencoded请求
如果是@RequestBody 则需要定义入参对象,从字段中获取数值
@PostMapping("/rePushMedicalRecord") public String rePushMedicalRecord(@RequestBody BodyData bodyData){
dodyData.getTopicId();方式获取数据
}
application/x-www-form-urlencoded
和 application/json
是两种不同的 Content-Type,它们各自有不同的用途和编码方式,用于在 HTTP 请求中发送数据。以下是这两种 Content-Type 的主要区别:
1. application/x-www-form-urlencoded
- 用途:主要用于发送表单数据,尤其是 HTML 表单数据。
- 编码方式:数据被编码为键值对(key-value pairs),使用等号 (
=
) 分隔键和值,使用&
符号分隔不同的键值对。例如:key1=value1&key2=value2
。 - 请求体示例:
name=John+Doe&age=30&city=New+York
- 优点:简单、易读,兼容性好(大多数浏览器和服务器都支持)。
- 缺点:对于复杂的数据结构(如数组、嵌套对象)表示起来较为繁琐,不直观。
2. application/json
- 用途:用于发送 JSON 格式的数据,通常用于 RESTful API。
- 编码方式:数据被编码为 JSON 字符串,这是一种轻量级的数据交换格式。
- 请求体示例:
{"name": "John Doe", "age": 30, "city": "New York", "hobbies": ["reading", "cinema"]}
- 优点:能够清晰地表示复杂的数据结构(如数组、嵌套对象),易于阅读和编写。JSON 格式是通用的,并且被各种编程语言和框架广泛支持。
- 缺点:与
application/x-www-form-urlencoded
相比,可能需要更多的处理逻辑来解析 JSON 数据。
选择哪种 Content-Type?
- 如果你在发送简单的表单数据,并且只需要键值对,那么
application/x-www-form-urlencoded
可能是一个不错的选择。 - 如果你在发送复杂的数据结构,或者你的 API 遵循 RESTful 设计原则,那么
application/json
通常是更好的选择。
在 Spring Boot 应用程序中,你可以通过 @RequestBody
注解来接收 application/json
类型的请求体,并通过 @RequestParam
、@PathVariable
或 @ModelAttribute
等注解来接收 application/x-www-form-urlencoded
类型的请求参数。