【发布时间】:2022-02-01 07:35:24
【问题描述】:
我有一个接受一些查询参数的 HTTP GET 端点:
@GetMapping("/cat")
public ResponseEntity<Cat> getCat(@RequestParam("catName") String catName){ ...
如果客户端将发送额外的查询参数,端点将忽略它们。
GET .../cat?catName=Oscar Getting Oscar
GET .../cat?catName=Oscar&gender=male Getting Oscar
GET .../cat?catName=Oscar&x=y Getting Oscar
我想拒绝发送额外查询参数的 HTTP 请求:
GET .../cat?catName=Oscar OK
GET .../cat?catName=Oscar&gender=male Reject (HTTP error code XYZ)
GET .../cat?catName=Oscar&x=y Reject (HTTP error code XYZ)
我可以更改方法的签名以接受地图并按照建议 here 验证地图中的值。
有没有办法在保持更简洁和自我解释的方法签名的同时?
【问题讨论】:
-
如果你在你的控制器方法中加入注解@RequestParam 和正确的字段,每个有更多或不同参数的请求都会被拒绝。我认为您无需执行任何操作,除非您想要自定义异常,您可以创建一个并针对这种情况发送特定的代码错误。
-
您还可以使用不可接受的参数创建其他方法,并在这些方法中返回您的自定义错误代码。
标签: java spring-boot http spring-mvc