httpclient - Micronaut 声明式 Http 客户端需要 @Body 或者您在 JSON 请求中获得一个密钥
问题描述
在我为文档发送 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);
帖子正文是我所期望的,一切正常。该文档根本没有谈论这个,所以我不知道它是否只是丢失了,或者我是否发现了一个错误或什么。感谢您的任何反馈。
解决方案
我遇到了同样的问题,我猜@Body 只是在文档中丢失了。如果你能提出 PR 来澄清它,那就太好了。
推荐阅读
- css - zone.js 是否与 css 不渲染有关?
- c - 仅在 Solaris 上来自 deflate() 的 Z_STREAM_ERROR
- r - 如何在自托管闪亮应用程序中显示“请稍候”,直到附加软件包
- android - 在 Android 9 中访问图像时出现 SecurityException
- python - 熊猫:给定一个开始和结束日期,为中间的每一天添加一列,然后添加值?
- javascript - 如何正确使用 module.exports?
- etl - 如何保证或检测 flink 中的数据完整性?
- python - 移除 matplotlib 底图周围的矩形边框
- php - 带有表单验证的 CodeIgniter AJAX JSON 验证器
- c++ - 如何在 C++ 中比较多个 .txt 文件?