0

我正在尝试 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 对象中?

4

0 回答 0