这是我的实体类
public class Tran{
@Id
@NotNull
@Column(unique = true)
private String tranId;
private String code;
private String failureReason;
@NotNull
private Date transaDate;
private String switchingId
}
这是我的控制器类
public class TranController{
@CrossOrigin(origins = "*")
@PostMapping(value = "/pur", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String,Object>> createTran(@RequestHeader(required = false,name="request-id") String requestId,
@RequestHeader(required = false,name="datetime") String requestDate,
@RequestHeader(required = false,name= "channel") String requestChannel,
@RequestBody TransRequestEntity createTransactionRequest,
HttpServletRequest req) throws ApiBaseException {
Tran tran = objectMapper.convertValue(createTranRequest,Trans.class);
TransCreateResponseEntity tranCreateResponseEntity = tranCreateService.createTransaction(tran,requestId);
Map<String,Object> trResponse = responseEntityTransformer.transform(transactionCreateResponseEntity,transCreateResponseTransformer);
switch (transactionCreateResponseEntity.getTransactionResponseHeader().getResponseCode()){
case "00" :
return ResponseEntity.status(HttpStatus.OK).body(trResponse);
case "10" : return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(trResponse);
default: return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(trResponse);
}
}
}
我发送这种类型的json
{
"tranId": "120",
"code": "50ac",
"transaDate": "2020/02/20",
"switchingId": "464vc",
}
此请求显示成功响应。没有问题但我发送了类似的请求
{
"tranId": "120",
"code": "50ac",
"transaDate": "2020/02/20",
"switchingId": "464vc",
"xyz" : "test"
}
这也是显示成功的响应,但我不需要xyz字段,这个字段也不在我的实体类中。。我想显示错误按摩像";坏请求";如果我添加另一个不在实体类中的字段
谢谢
Spring使用Jackson库。默认情况下,框架使用的ObjectMapper
将其FAIL_ON_UNKNOWN_PROPERTIES
设置为false
。
将其放入您的application.properties
:
spring.jackson.deserialization.fail-on-unknown-properties=true
由于无法识别的属性,它将开始失败。如果您希望自己处理异常,可以使用进行处理
@ExceptionHandler(UnrecognizedPropertyException.class)
点击此处了解更多