java Micronaut忽略客户端接受的contenttype
我正在尝试创建一个micronaut端点,它根据客户机接受的内容生成JSON或XML响应。我写了一些代码
@Get(value = "/notifications/{notificationId}", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
Notification fetchNotification(@PathVariable String notificationId);
在执行这段代码时,我只需将select输入数据库并返回POJO。 我假设,如果请求头包含“accept-application/xml”,micronaut应该以xml的形式返回响应。另外,对于JSON。但我在请求头上独立地得到一个JSON响应。 我做了一些调查发现
io.micronaut.http.server.netty.RoutingInBoundHandler#prepareRouteForExecution
在这里,micronaut创建了一个没有contentType的HttpResponse。之后,它在中选择第一个内容类型,生成并返回响应。我有MediaType。应用程序首先返回JSON,所以micronaut返回JSON。如果我更改它们的顺序,micronaut将返回XML
此外,我还检查了另一个端点,它应该只返回json
@Get(value = "/notifications/last", produces = MediaType.APPLICATION_JSON)
Notification fetchLastNotification();
我也看到了同样的行为。 为什么micronaut会忽略客户端接受的内容类型?我应该在控制器中手动创建正确的HttpResponse吗
共 (0) 个答案