gpt4 book ai didi

java - Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

转载 作者:IT老高 更新时间:2023-10-28 13:45:42 25 4
gpt4 key购买 nike

我创建了一个如下所示的 RestController:

@RestController
public class GreetingController {

@RequestMapping(value = "/greetings", method = RequestMethod.GET)
public Mono<Greeting> greeting(HttpServletRequest request) {

return Mono.just(new Greeting("Hello..." + request.toString()));
}
}

不幸的是,当我尝试点击“问候”端点时,我得到了一个异常:

java.lang.IllegalStateException: No resolver for argument [0] of type [org.apache.catalina.servlet4preview.http.HttpServletRequest]

我正在使用

compile('org.springframework.boot.experimental:spring-boot-starter-web-reactive')

如何解决这个问题?

Link到完整的堆栈跟踪。 Link构建.gradle

---------编辑---------

使用界面。现在得到:

java.lang.IllegalStateException: No resolver for argument [0] of type [javax.servlet.http.HttpServletRequest] on method (rest is same)

最佳答案

您应该从不在 Spring Reactive Web 应用程序中使用 Servlet API。这不受支持,这会使您的应用程序依赖于容器,而 Spring Web Reactive 可以与 Netty 等非 Servlet 运行时一起使用。

您应该使用 Spring 提供的 HTTP API;这是您的代码示例,有一些更改:

import org.springframework.http.server.reactive.ServletServerHttpRequest;

@RestController
public class GreetingController {

@GetMapping("/greetings")
public Mono<Greeting> greeting(ServerHttpRequest request) {

return Mono.just(new Greeting("Hello..." + request.getURI().toString()));
}
}

您可以注入(inject) ServerWebExchange 或直接注入(inject) ServerHttpRequest/ServerHttpResponse

关于java - Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40361298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com