我们已将多部分帖子请求映射到以下方法。
fun post(@RequestParam(value = "photo", required = true) photo: Array<MultipartFile>,
@Valid person: Person)
class Person {
int id,
String name
}
在下面的示例中,请求中有多个name
参数
localhost:8080/api
post body:
id:101
name: Jhon
name: Jhonny
如果请求包含重复的参数,是否可以拒绝该请求?
答案 0 :(得分:0)
您可以将HttpServletRequest
添加到处理程序方法参数列表中,对其进行验证,如果多次出现相同的参数,则返回ReponseEntity.badRequest().build()
。
@GetMapping
public ResponseEntity handlerMethod(HttpServletRequest request) {
if (request.getParameterValues("name").length > 1) {
return ResponseEntity.badRequest().build();
}
return ResponseEntity.ok().build();
}
如果要在整个应用程序中执行此操作,可以定义一个过滤器:
@Component
class DuplicateRequestParameterFilter extends OncePerRequestFilter {
Enumeration<String> parameters = request.getHeaderNames();
while (parameters.hasMoreElements()) {
if (request.getParameterValues(parameters.nextElement()).length > 1) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
}
filterChain.doFilter(request, response);
}
答案 1 :(得分:0)
否,将存在一个名为“名称”的数组或包含两个名称的字符串,看起来像这样
{id:101,name:'Jhon,Jhonny'}
或{id:101,name:['Jhon','Jhonny']}
由接收方式决定
如果name是一个字符串,则结果为'Jhon,Jhonny'。
如果name是一个字符串数组,则结果为['Jhon','Jhonny']。