如何解决Micronaut会忽略客户接受的内容类型
我正在尝试创建一个micronaut端点,该端点会根据客户端接受的内容生成JSON或XML响应。我已经写了一些代码
@Get(value = "/notifications/{notificationId}",produces = {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
Notification fetchNotification(@PathVariable String notificationId);
为了实现此代码,我只是选择进入数据库并返回POJO。 我假设如果请求标头包含“ accept-application / xml”,micronaut应该以XML返回响应。此外,对于JSON。但是我在请求标头上得到了独立于JSON的响应。 我进行了调查,发现了
io.micronaut.http.server.netty.RoutingInBoundHandler#prepareRouteForExecution
此处,micronaut创建了一个没有contentType的HttpResponse。之后,它会在产生中选择第一个内容类型并返回响应。我首先有MediaType.APPLICATION_JSON,所以micronaut返回JSON。如果我更改顺序,micronaut将返回XML。
此外,我检查了另一个端点,该端点应该仅返回json
@Get(value = "/notifications/last",produces = MediaType.APPLICATION_JSON)
Notification fetchLastNotification();
我看到了相同的行为。 为什么micronaut会忽略客户接受的内容类型?我应该在控制器中手动创建正确的HttpResponse吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。