问题标签 [micronaut-rest]

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 投票
2 回答
1881 浏览

micronaut - 使用 HttpClient 的 Micronaut 读取超时

我正在努力使用Micronaut HTTPClient多次调用第三方 REST 服务而没有收到io.micronaut.http.client.exceptions.ReadTimeoutException

为了消除第三方依赖,可以使用一个简单的 Micronaut 应用程序调用它自己的服务来重现该问题。

示例控制器:

测试客户端:

使用 curl、ab 或 postman 直接调用 /service 端点不会产生错误。

调用 /mproxy 端点会抛出异常

或者,如果通过 ab 测试 /proxy 端点,则会引发相同的异常

ab -c 5 -n 200 本地主机:8080/代理

或通过与邮递员的多次通话。

这适用于具有绝对香草模板应用程序的 micronaut 版本 2.5.5,在 application.yml 中未指定连接池或超时。

在 4 个连接/客户端后似乎出错,但更改连接池和超时似乎不会改变结果。我错过了一些客户端配置吗?

0 投票
0 回答
38 浏览

micronaut - Micronaut:同一应用程序的多种安全配置

描述

我有一个典型的 Micronaut API 应用程序,它有两种类型的端点:

1/ 使用签名 A 签名的 JWT 令牌身份验证面向客户端

2/ 内部(服务到服务)使用签名 B 签名的 JWT 令牌认证

因此,拥有两种不同的安全 JWT 令牌类型和相应的两种不同的签名,我希望它们是独占的,例如,给定的签名仅用于相应的控制器。

我当前的配置如下所示:

在进行 JWT 令牌验证时,它会检查至少一个签名,而我确实需要一个签名。

是否可以通过配置来解决这个问题,例如通过标记签名和注释相应的控制器?

下面是一些例子:

Micronaut 版本 1.3.7

谢谢。

0 投票
0 回答
110 浏览

serialization - Micronaut 可选枚举查询参数

我正在编写一个 Micronaut 应用程序,但在编写一个控制器时遇到了问题,该控制器能够采用类型为枚举的可选参数。问题是,当我添加一个可空@QueryValue的枚举类型时,每次我尝试访问端点时,它都会返回一个 403,我认为这是因为我启用了 Micronaut 安全性,它为任何未映射的 URL 返回一个 403。

我不得不求助于更改state类型String?并手动序列化。但我想要的是,如果我的state参数不存在于查询中,那么statevar 将为空,否则它会调用ContentState.valueOf

我已经尝试过参数绑定以及如何使用基于 JAX-RS 的 Restlet 自动将 @DefaultValue 映射到枚举参数?

0 投票
0 回答
385 浏览

slf4j - 向 Micronaut 中的 slf4j 登录添加请求 ID

问题

当请求进入服务器时,我想询问标头并查看是否有特定标头,如果是,我想获取该标头值并将其添加到 SLF4Js MDC,如果它不存在,我将生成我的拥有(见下面的代码)。

问题

我是第一次使用 Micronaut (v2.5.5),使用 Spring Boot 已经有一段时间了。使用 Spring Boot,我能够添加一个Filter方法,该方法会将请求 ID 添加到 SLF4Js MDC 上下文中,以便在记录元素时将其包含在日志消息中。

例子

2021-07-01 19:12:57.104 LogLevel=INFO rid=3568b2d7-d8f1-4d7d-9e8d-49f2be727255, 1 --- [nio-8080-exec-8] .....

这在 Micronaut 中失败了,我认为是因为请求可以在线程之间传递,并且 MDC 是特定于线程的。

例子

2021/01/07 18:50:05.021 信息 [qtp1561347421-43] ccdex.css.controllers.MyEndpoint rid= - .....

Micronaut 中是否有任何机制来支持此功能而无需切换到 Jaeger 等...?如果是这样,那是什么?

这是我尝试过的代码,它不起作用

我确实尝试将rid放在请求对象中(传递到doFilter),然后在我的控制器中使用它,例如

在这种情况下,日志消息包含 RID,但这似乎有点令人费解。

我进行了搜索,看到了我的想法,但是有几个相关的问题;答案没有多大意义(Micronaut 新手,对不起),或者似乎没有一个解决方案来显示需要做什么。

提前致谢

0 投票
0 回答
92 浏览

micronaut - 带有 Flowable 的 Micronaut 2.5.5 OutOfMemoryError

我的应用程序基本上是另一个服务的代理,我的应用程序将 JSON 转换为第三方服务所需的 SOAP,调用该服务,然后将 SOAP 响应转换为 JSON。有时我在发出请求后会收到OutOfMemoryError ,有时是在第一个请求时。

我需要以某种方式关闭Flowable吗?

我的 application.yml 中有以下配置供客户端使用

这是我用来进行 http 调用的代码

这是我用来调用第三方服务器的服务

我添加doOnXXX主要是为了让我了解发生了什么。但是正如我在上面的代码中所说的那样,我会在控制台中收到以下错误,它看起来并不致命,因为服务器一直在运行,但它令人担忧:

我正在调试这个

  • macOS 卡塔利娜
  • IntelliJ 2021.1.3(2021 年 6 月 30 日构建)
  • OpenJDK 运行时环境 AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
  • 微航海 v2.5.5
0 投票
1 回答
406 浏览

client - 如何在 Micronaut 中模拟声明式客户端?

我有一个类,在其中我从声明性客户端调用一个方法。但是对于我的测试,我不希望它调用实际的 URL。相反,我想模拟它。我怎么能做到这一点,因为它不是一个类,而是一个用 @Client 注释的接口?

示例代码:-这里。请查看第 4.3 节

0 投票
1 回答
99 浏览

java - 异常堆栈跟踪和原因未映射到 Micronaut 2.5.8 中的自定义全局异常处理

试图在 Micronaut 中处理全局异常处理,但是异常堆栈跟踪和原因没有被抛出到 ExceptionHandler。

控制器

实际错误未映射到 GlobalExceptionHandler。exception.getLocalizedMessage()为空并且LOG.error(exception.getCause().getCause().getMessage())抛出空指针异常

0 投票
1 回答
158 浏览

elasticsearch - 带有 micronaut-elasticsearch 插件的 Grails

我正在将项目表单 grails 3.0.3和迁移elasticsearch 1.7.3grails 4.0.4elasticsearch 7.13

不幸的是,elasticsearch-groovy-plugin没有得到积极维护,似乎最好的选择是切换到micronaut-elasticsearch

为了测试这个选项,我创建了一个新grails 4.0.4应用程序并添加了

gradle.build文件。不幸的是,我收到以下错误:

我在这里想念什么吗?

0 投票
0 回答
64 浏览

java - Micronaut 安全 - 为 RSASignatureConfiguration 设置 PublicKey

我在 micronaut 中找到的所有关于如何验证 JWT 令牌的示例都使用了“秘密”。他们这样做:

我的问题是:使用私钥/公钥时我必须设置哪些属性?

注意:在我的情况下,我只需要验证令牌。不生成它。

0 投票
0 回答
73 浏览

java - 使用 Micronaut + ASP.Net Identity server 4 进行 Rest API 测试

我有一个 Micronaut Rest API,一些端点受安全注释保护

对于使用 JWT 令牌进行授权和身份验证,我使用的是 ASP.NET 身份服务器 4 https://github.com/IdentityServer/IdentityServer4

现在我正在尝试为每个端点编写单元测试和集成。我不确定如何从身份服务器获取 JWT 令牌并从 Microanut 声明式客户端传递它

JUnit 测试

我知道模拟 JWT 令牌,但不确定如何模拟?

应用程序.yml