[英]Request mapping in RestController
在我的應用程序(springboot 2.+)中,我有一個 RestController
@RestController
@RequestMapping("/")
public class DeviceController {
@GetMapping(value = "/devices") {
public ResponseEntity<String> devices() {
...
}
}
}
現在,使用 URI 請求: /devices - 返回所有設備
但是使用 URI 請求: /devices?unknown_any_param=2 - 也返回所有設備
當我傳遞任何未知參數時,我怎樣才能做到這一點,這個方法devices()
沒有調用,即返回錯誤“400 Bad request”?
我試圖指出像 @GetMapping(value = "/devices", params={}) 這樣的注釋,但它沒有幫助。
您可以獲取所有傳遞的參數,如下所示
public ResponseEntity<String> devices(
@RequestParam Map<String,String> requestParameters)
如果請求參數傳遞了有效的參數列表,現在檢查它們的鍵
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
我相信您應該回復 404 'NOT FOUND',因為在 unknown_any_param=2 時沒有可用的設備。
如果你還想檢查——
您可以使用反射 API 來檢查密鑰是否有效。 考慮-
public class DeviceDto{
private String knownValue;
@JsonProperty("unknown_any_param")
private String unknownValue;
}
情況1:如果參數與變量名相同。
DeviceDto.class.getDeclaredField("knownValue");
情況 2:如果 param 與 @JsonProperty 中的值相同並且您知道變量名稱
DeviceDto.class.getDeclaredField("unknownValue")
.getAnnotation(JsonProperty.class)
.value();
情況 2:如果 param 與 @JsonProperty 中的值相同並且您不知道變量名
Arrays.asList(DeviceDto.class.getDeclaredFields()).stream()
.filter(r -> "unknown_any_param"
.equals(r.getAnnotation(JsonProperty.class).value()))
.findFirst();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.