Micronaut 声明式 Http 客户端需要 @Body 或者你在 JSON 请求中得到一个密钥
Micronaut Declarative Http Client Requires @Body or you get a key in the JSON request
在发送 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();
我期待这个 body 到 post:
{"message": "Hello"}
但实际上 posting 是:
{"statusRequest": { "message": "Hello"}}
失败了。但是,如果我这样修改操作界面:
@Post
Single<StatusResponse> save(@Body StatusRequest statusRequest);
post body 是我所期望的,一切正常。 documentation 根本没有谈论这个,所以我不知道它是否只是丢失或者我是否发现了一个错误或什么。感谢您的任何反馈。
我 运行 遇到了同样的问题,我猜 @Body 只是在文档中丢失了。如果你能提出 PR 来澄清它就太好了。
在发送 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();
我期待这个 body 到 post:
{"message": "Hello"}
但实际上 posting 是:
{"statusRequest": { "message": "Hello"}}
失败了。但是,如果我这样修改操作界面:
@Post
Single<StatusResponse> save(@Body StatusRequest statusRequest);
post body 是我所期望的,一切正常。 documentation 根本没有谈论这个,所以我不知道它是否只是丢失或者我是否发现了一个错误或什么。感谢您的任何反馈。
我 运行 遇到了同样的问题,我猜 @Body 只是在文档中丢失了。如果你能提出 PR 来澄清它就太好了。