I have an endpoint with a request body:
@PostMapping("/v1/message")
@PreAuthorize("#oauth2.isAnyClientId(@authorizeConfig.getIds())")
public void receive(
@RequestBody @NotNull @Valid final Message message,
@RequestHeader final HttpHeaders headers) {
...
}
The Message class has several parameters:
@Builder
@Getter
@Setter
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder(alphabetic = true)
public class Message {
@NotBlank(message = "tenant is empty")
private String tenant;
@NotBlank(message = "messageId is empty")
private String messageId;
@NotBlank(message = "payload is empty")
private String payload;
@NotNull(message = "messageType is empty")
private MessageType messageType;
private String xSchemaVersion;
}
When I perform a request to that endpoint:
{
"tenant":"client1",
"messageId":"670f13e15d554b2bba56f6d76d33b79c",
"payload":"",
"messageType":"MessageType.Email",
"xSchemaVersion":"2.7.3"
}
I get the following error:
{
"status": 400,
"date": "2022-07-18T08:21:21.430+0000",
"exception": "missing parameter: xSchemaVersion",
"description": "uri=/v1/message"
}
But if I do the following instead:
{
"tenant":"client1",
"messageId":"670f13e15d554b2bba56f6d76d33b79c",
"payload":"",
"messageType":"MessageType.Email",
"xschemaVersion":"2.7.3"
}
I get 200 OK.
Notice that the only thing I changed is the lowercase s in xschemaVersion instead of xSchemaVersion.
Why is this necessary?