有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案