问题标签 [micronaut-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
175 浏览

micronaut - 如何使用鉴别器和声明式客户端路由请求?

用例

我正在尝试使用 micronaut 声明式客户端调用服务。该服务实际上是许多相同的服务,但针对我们系统中的每个原则托管在不同的主机上。例如

  • tenetA.example.com/api
  • tenetB.example.com/api

从 micronaut,我想使用请求标头X-tenetID,并基于它调用正确的服务。听起来很简单吧?

第一次尝试:使用过滤器

我尝试的第一件事是在客户端上使用过滤器

我已经确认我的过滤器被调用,请求 uri 被设置,但请求 uri 没有在链的下游得到尊重。覆盖订单似乎也没有任何效果。它仍在向replaceme.example.com. 我在这里做错了吗?

我发现一些论坛帖子说这种方法可能行不通,因为选择的主机是在流程的早期完成的,以说明 LoadBalancer 机制。这让我进行了第二次尝试:

第二次尝试:使用客户端 LoadBalancer

由于似乎无法在过滤器中更改 url 的主机,我尝试编写自己的DiscoveryClientLoadBalancerFactory

不过我被困在这里,因为我不知道如何告诉声明式客户端使用我的 tenetID 作为鉴别器。我只见过@Inject注释创建 a DefaultHttpClient,它只会调用loadBalancer.select(getLoadBalancerDiscriminator())getLoadBalancerDiscriminator()总是返回null。有没有办法可以根据请求标头设置鉴别器?

什么不可行:应用程序配置

一些使用 bitbucket 的示例文档表明 url 来自配置。我们的原则来来去去,每项服务都必须使用存储在云库中的自己的凭据进行身份验证。因此,在 application.conf 或类似文件中存储某种映射在这里并不是很有用,因为我们不希望每次添加新原则或轮换密钥时都必须重新启动。

帮助

在这两种方法之间,LoadBalancer 路由似乎更骇人听闻,因为我正在做的是请求路由或 url 重写,而不是负载平衡。这些方法之一应该有效吗?有没有更好的方法来做我想做的事?

0 投票
1 回答
292 浏览

java - 如何从 curl 或 postman 或 swagger Micronaut 传递值 @Body MultipartBody

我在 Micronaut 中有一个简单的下面的 post 方法,它将图像发送到控制器,如下所示

如何将文件的值从邮递员、curl 或 swagger 传递给控制器​​?

我尝试了以下事情

在此处输入图像描述

我得到错误为Required Body [file] not specified. 我们如何传递价值?

0 投票
1 回答
805 浏览

java - 未指定所需的正文 [文件] Micronaut 分段上传

尝试使用声明性 HTTP 客户端上传文件,如下所示

Http客户端

对客户端的依赖注入

产品控制器

卷曲

我面临的一个例外

0 投票
1 回答
697 浏览

java - 使用声明式客户端 Micronaut 将多个文件上传到 MultipartBody

尝试使用 Micronaut 声明式客户端上传多个文件。

Http客户端

将多个文件添加到多部分

产品控制器

例外

0 投票
0 回答
113 浏览

micronaut - Micronaut 的 HttpClient:连接池、connection-pool-idle-timeout 和 connect-ttl:它们如何协同工作?

我对以下设置有疑问:

  • micronaut.http.client.connect-ttl
  • micronaut.http.client.connection-pool-idle-timeout

我想了解:

  • 以下设置的目的是什么?
  • 它们有何不同?
  • 他们如何一起工作?
  • 如果池被禁用(micronaut.http.client.pool.enabled = false),这些设置是否有用?

我不清楚 micronaut 文档。

0 投票
1 回答
525 浏览

micronaut - Micronaut 的 HttpClient:事件循环组、线程数、线程工厂:它们如何协同工作?

我来自 Spring Framework,现在我在一个 micronaut 项目中。我对 netty 及其概念知之甚少,因此我怀疑 micronaut 文档对我来说并不清楚。

我对以下设置有疑问:

  • micronaut.http.client.event-loop-group
  • micronaut.http.client.num-of-threads
  • micronaut.http.client.thread-factory

我想了解:

  • 考虑到可以定义 event-loop-group 的线程数,配置 event-loop-group 和 ALSO client.num-of-threads / client.thread-factory 是否有意义?

  • 如果它们可以一起使用:它们如何一起工作?

  • 如果它们不能一起使用:它们有何不同?每个最合适的用例是什么?

0 投票
1 回答
582 浏览

micronaut - Micronaut - 创建、获取和销毁 ApplicationContext bean

我需要动态创建和销毁HttpClient对象,以与客户在我的 Micronaut 应用程序中注册/注销自己相对应。作为其中的一部分,我想将它们作为 bean 添加到应用程序上下文中,以便它们HttpFilter在项目中也自动使用自定义 s。

ApplicationContext我认为使用带有名称的 bean 方法来管理这些 beanQualifier以跟踪它们会相当简单,但是这些 API 的行为方式似乎让我感到莫名其妙:

  1. applicationContext.createBean(HttpClient.class, Qualifiers.byName("myLabel"), myUrl)失败:

为什么 bean 是否存在很重要?我正在努力创造它!

  1. applicationContext.findBean(HttpClient.class)失败:

为什么要尝试创建它?我只是想找到它!

注意applicationContext.getBean(HttpClient.class, Qualifiers.byName("myLabel"))可能在这里工作,但因为我无法解决第一点,我无法验证这一点)

  1. applicationContext.destroyBean(HttpClient.class)不允许Qualifier在方法中指定 a ,这意味着我不能使用它从上下文中删除 bean。它还在没有限定符 ( applicationContext.createBean(HttpClient.class, myUrl)) 的 bean 创建后返回 null ,这表明它无论如何都找不到创建的 bean ......

我假设我在这里使用了错误的 API,但正确的 API 是什么?

总而言之,我非常困惑 - 欢迎任何有关正确使用这些 API 的帮助。

0 投票
0 回答
84 浏览

java - 如何在 Micronaut 框架中编写此代码

我已经使用了 OKHtttpClient 包。需要在 Post 方法中提交数据,并且 mediatype 应该是 x-www-form-urlencoded

'''

'''

我努力了 :

0 投票
1 回答
75 浏览

micronaut - HttpClient 在我的类中抛出空指针异常,它扩展了 MicronautRequestHandler

我在下面提到的代码中得到NullPointerException了:httpClient

0 投票
1 回答
138 浏览

java - Micronaut 无法加载和使用我的“TypeConverter”实现

我有一个控制器方法,它接受一个 POJO。

交易类型很简单enum,但我想使用自定义转换从入站值到交易类型。

我写了一个转换器:

Micronaut 不是使用类型转换器来转换入站值吗?
是否需要一些特殊的注册过程才能让 Micronaut 知道它应该使用转换器?

如果我添加一个构造函数,TransactionTypeConverter我可以看到该类根本不是由 Micronaut 实际创建的。

如果我将它作为常规依赖项添加到控制器,它会被加载(这并不奇怪),但仍未使用。我缺少一个步骤吗?