仅对实体类字段成功响应



这是我的实体类

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)

点击此处了解更多

最新更新