问题标签 [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.
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 个连接/客户端后似乎出错,但更改连接池和超时似乎不会改变结果。我错过了一些客户端配置吗?
micronaut - Micronaut:同一应用程序的多种安全配置
描述
我有一个典型的 Micronaut API 应用程序,它有两种类型的端点:
1/ 使用签名 A 签名的 JWT 令牌身份验证面向客户端
2/ 内部(服务到服务)使用签名 B 签名的 JWT 令牌认证
因此,拥有两种不同的安全 JWT 令牌类型和相应的两种不同的签名,我希望它们是独占的,例如,给定的签名仅用于相应的控制器。
我当前的配置如下所示:
在进行 JWT 令牌验证时,它会检查至少一个签名,而我确实需要一个签名。
是否可以通过配置来解决这个问题,例如通过标记签名和注释相应的控制器?
下面是一些例子:
Micronaut 版本 1.3.7
谢谢。
serialization - Micronaut 可选枚举查询参数
我正在编写一个 Micronaut 应用程序,但在编写一个控制器时遇到了问题,该控制器能够采用类型为枚举的可选参数。问题是,当我添加一个可空@QueryValue
的枚举类型时,每次我尝试访问端点时,它都会返回一个 403,我认为这是因为我启用了 Micronaut 安全性,它为任何未映射的 URL 返回一个 403。
我不得不求助于更改state
类型String?
并手动序列化。但我想要的是,如果我的state
参数不存在于查询中,那么state
var 将为空,否则它会调用ContentState.valueOf
我已经尝试过参数绑定以及如何使用基于 JAX-RS 的 Restlet 自动将 @DefaultValue 映射到枚举参数?
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 新手,对不起),或者似乎没有一个解决方案来显示需要做什么。
- https://github.com/micronaut-projects/micronaut-core/issues/3106
- https://github.com/micronaut-projects/micronaut-core/issues/1669
- 其他人我还查看了讨论注释@NewSpan的文档,但这似乎专门用于分布式跟踪(Jaeger & Zipkin),所以我没有尝试。
提前致谢
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
client - 如何在 Micronaut 中模拟声明式客户端?
我有一个类,在其中我从声明性客户端调用一个方法。但是对于我的测试,我不希望它调用实际的 URL。相反,我想模拟它。我怎么能做到这一点,因为它不是一个类,而是一个用 @Client 注释的接口?
示例代码:-这里。请查看第 4.3 节
java - 异常堆栈跟踪和原因未映射到 Micronaut 2.5.8 中的自定义全局异常处理
试图在 Micronaut 中处理全局异常处理,但是异常堆栈跟踪和原因没有被抛出到 ExceptionHandler。
控制器
实际错误未映射到 GlobalExceptionHandler。exception.getLocalizedMessage()
为空并且LOG.error(exception.getCause().getCause().getMessage())
抛出空指针异常
elasticsearch - 带有 micronaut-elasticsearch 插件的 Grails
我正在将项目表单
grails 3.0.3
和迁移elasticsearch 1.7.3
到
grails 4.0.4
和elasticsearch 7.13
。
不幸的是,elasticsearch-groovy-plugin没有得到积极维护,似乎最好的选择是切换到micronaut-elasticsearch。
为了测试这个选项,我创建了一个新grails 4.0.4
应用程序并添加了
到gradle.build
文件。不幸的是,我收到以下错误:
我在这里想念什么吗?
java - Micronaut 安全 - 为 RSASignatureConfiguration 设置 PublicKey
我在 micronaut 中找到的所有关于如何验证 JWT 令牌的示例都使用了“秘密”。他们这样做:
我的问题是:使用私钥/公钥时我必须设置哪些属性?
注意:在我的情况下,我只需要验证令牌。不生成它。
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