我正在尝试 Micronaut 框架,我正在努力使用我尝试过的 Form Urlencoded 列表:
public record Request(
String someThing,
@JsonFormat(shape = JsonFormat.Shape.ARRAY,pattern = "messages\\[.*?\\]")
String[] messages,
@JsonProperty("messages0")
String[] messages0,
@JsonProperty("messages1")
String[] messages1,
@JsonAlias({"messages2"})
List<String> messages2,
@JsonProperty("messages3")
Map<Object, Object> messages3
) {
}
使用控制器:
@Post(produces = MediaType.APPLICATION_JSON, consumes = {MediaType.APPLICATION_FORM_URLENCODED, MediaType.MULTIPART_FORM_DATA})
public HttpResponse<Response> index(@Body Request request) {
LOGGER.info("Got: {}", request);
return HttpResponse.ok(
new Response(false,"test")
);
}
[...]
private record Response(
Boolean success,
String reason,
) {
}
卷曲代码是:
curl --request POST \
--url http://localhost:9080/test \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'messages[0]=Hello world ' \
--data 'messages0[]=test0' \
--data 'messages1[]=test1' \
--data 'messages2[0]=test2' \
--data 'messages3[]=test3' \
--data 'messages2[]=test2-2'
有没有办法将消息反序列化到我的 Request 对象中?