Micronaut声明性Http客户端需要@Body或您在JSON请求中获得了密钥

问题描述 投票:0回答:1

我有点想得到一些验证,然后再发送PR来获取文档。我有以下操作界面:

public interface StatusOperations {

    @Get
    HttpResponse<List<StatusResponse>> findAll();

    @Post
    Single<StatusResponse> save(StatusRequest statusRequest);
}

然后是声明性客户端界面:

@Client("/api/statuses")
public interface StatusClient extends StatusOperations {

    @Override
    @Get
    HttpResponse<List<StatusResponse>> findAll();

    @Override
    @Post
    Single<StatusResponse> save(StatusRequest statusRequest);
}

这里是StatusRequest

@Introspected
public class StatusRequest {

    private UUID id;

    @NotNull
    private String message;

    // getter/setter stuff below
}

当我使用客户端访问API时:

StatusResponse response = client.save(new StatusRequest("Hello")).blockingGet();

我希望这个机构发布:

{"message": "Hello"}

但是实际发布的是:

{"statusRequest": { "message": "Hello"}}

哪个失败。但是,如果我这样修改操作界面:

@Post
Single<StatusResponse> save(@Body StatusRequest statusRequest);

职位是我所期望的,并且一切正常。 documentation根本没有谈论这个问题,所以我不知道它是否只是丢失了,或者是否发现了错误或什么。感谢您的任何反馈。

httpclient micronaut
1个回答
0
投票

我遇到了同样的问题,我想文档中根本没有@Body。如果您可以提出一个PR进行澄清,那就太好了。

© www.soinside.com 2019 - 2024. All rights reserved.