parameters - 在 Micronaut 中从控制器到客户端绑定/传递请求参数
问题描述
我正在尝试使用 Micronaut 构建网关应用程序。在客户端,它连接到 REST API,而在控制器端,另一个应用程序正在发送请求>我能够流式传输请求,但不能流式传输路径变量/参数。例如,我如何将控制器中接收到的路径参数传递给客户端。
@Controller("/bintray")
public class BintrayController {
private final BintrayLowLevelClient bintrayLowLevelClient;
private final BintrayClient bintrayClient;
public BintrayController(BintrayLowLevelClient bintrayLowLevelClient,
BintrayClient bintrayClient
) {
this.bintrayLowLevelClient = bintrayLowLevelClient;
this.bintrayClient = bintrayClient;
}
@Get(uri = "/packages/{paramFromRequest}", produces = MediaType.APPLICATION_JSON_STREAM)
Flowable<BintrayPackage> packages() {
return bintrayClient.fetchPackages();
}
}
@Client(BintrayConfiguration.BINTRAY_API_URL)
public interface BintrayClient {
@Get("/api/${bintray.apiversion}/packages/{paramFromRequest}")
Flowable<BintrayPackage> fetchPackages();
}
非常感谢您的帮助。
解决方案
您可以使用以下方法动态获取路径和查询参数HttpRequest
:
@Get(uri = "/packages", produces = MediaType.APPLICATION_JSON_STREAM)
Flowable<BintrayPackage> packages(HttpRequest<?> request) {
return bintrayClient.fetchPackages(request.getParameters());
}
至于 Http 客户端,我不会选择声明式客户端,而是使用低级客户端,并手动添加查询参数以及您在 http 查询中想要的内容
推荐阅读
- reactjs - useLeafletContext() 只能用于
- lodash - 我如何将 lodash flow 与 find 一起使用?
- python - Pandas 使用字典和正则表达式替换
- python - tensorflow.python.framework.errors_impl.AlreadyExistsError
- javascript - Angular Http Get 请求返回 Array(2)[Object, Object] 但未定义
- javascript - 带有按钮的数据列表应该显示下面的其余数据
- unit-testing - 对 setter 和 getter 进行单元测试 - 最佳实践
- python - '^' 是什么意思?
- javascript - 带有 url 参数的 Next.js 站点地图
- c++ - 类的容器 get() 成员函数使用 vs 复制