一、区分不同请求
GET请求 只查询资源
POST请求 修改或更新资源
PUT 更新资源
DELETE 删除资源
GetMapping传参只能是字符串 不能是数组,列表这种多个的
PostMapping可传多个 因此查询设计数组或列表可用postmapping
二、不同注解
@PathVariable
路径参数 须在请求路径加上
@Param
在写原生sql时要用
且定义的参数前端需要凭借在url上
@RequestBody
前端传json 通过该注解可以转成Java对象(实体类)
@RequestParam
获取查询参数:通过指定参数名称,
@RequestParam
注解可以从请求的查询字符串中获取对应参数的值。获取表单数据:当处理表单提交时,
@RequestParam
注解可以从表单数据中获取指定参数的值。参数绑定:
@RequestParam
注解将请求参数的值绑定到方法参数上,可以将参数值自动转换为方法参数的类型。简单讲就是可以从前端传入的json参数中获取某个变量
如@RequestParam("id") int id 获取传入的id
@RequestPart("file") 如: public Result importentities(@RequestPart("file") MultipartFile file) 实现文件格式参数
ps:便于配置很多条件:
value
:指定请求参数的名称。可以使用value
属性来定义参数名称。例如:@RequestParam(value = "id")
,表示从请求中获取名为"id"的参数值。
required
:指定参数是否为必需。默认情况下,required
属性为true
,表示参数是必需的。如果请求中没有提供该参数,将会抛出异常。如果将required
属性设置为false
,表示参数是可选的,如果请求中没有提供该参数,方法参数将会使用默认值或null
。
defaultValue
:指定参数的默认值。可以使用defaultValue
属性为参数设置默认值。当请求中没有提供该参数时,方法参数将使用默认值。例如:@RequestParam(value = "page", defaultValue = "1")
,表示如果请求中没有名为"page"的参数,将使用默认值1。
name
:指定请求参数的名称。与value
属性类似,可以使用name
属性来定义参数名称。例如:@RequestParam(name = "id")
。
defaultValue
和required
属性的互斥:defaultValue
和required
属性是互斥的,即同时设置它们没有意义。如果将defaultValue
属性设置为非空字符串,则required
属性将自动被设置为false
。
HttpServletRequest request
对于request获取参数只能从url中获取
request.getParameter("param1");获取指定参数 如果为数组默认获取第一个
request.getParameterValue("param1");获取指定参数获取全部
三、前端请求
1、post发送请求参数
fetch('/api/endpoint?param1=value1', { method: 'POST', // 其他请求配置 });
fetch('/api/endpoint', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ param1: 'value1' }) });
上述两种是携带参数的不同发送方式 前者是直接凭借参数 后者是将参数放在请求体中
但两者请求对于后端来讲一样 但一般多个参数建议用请求体方式如:
fetch('/api/endpoint', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
param1: 'value1',
param2: 'value2'
})
})
.then(response => response.json())
.then(data => {
console.log(data); // 输出: "Success!"
})
.catch(error => {
console.error('Error:', error);
});
2、post发送请求json字符串
fetch('/api/endpoint', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ param1: 'value1', param2: 'value2' }) });
后端用请求体接收