我目前正在尝试将我的应用程序从Spring Boot 1.5.x迁移到反应式堆栈上的2.x.x。我面临着一个我无法解决的怪异问题。希望有人知道解决方案。
我实现了一个api来接收用户jwt令牌作为标头上的“授权”字段。 api是一种POST方法,可从主体中的用户接收特定的json数据,然后转到后端并对其进行处理。 不幸的是,当我添加标题时,我一直收到http 404错误,当我在邮递员中删除它时,通常是200错误。 这是我的控制器。
waitpid()
这是我简单的安全配置
@RestController
@RequestMapping("/user")
@Slf4j
public class UserHandler {
@Autowired
private UserService service;
@Autowired
private Utility utility;
@PostMapping("/updateLink")
public Mono<ServerResponse> addNewAccountLinkAPI(@RequestHeader(name="Authorization") String id, @RequestBody UpdateAccountLink request){
return Mono.just(request)
.flatMap(s -> service.addNewAccountLink(s))
.flatMap(s -> ok().body(BodyInserters.fromObject(new RespWrap("Success", new Date(), null, s))))
.switchIfEmpty(badRequest().body(BodyInserters.fromObject(new RespWrap("Failed", new Date(), "Failed to create new link", null))));
}
}
任何人都可以指出我的问题。当然,这似乎缺少配置问题。
答案 0 :(得分:0)
我可以看到您的代码段有两个问题。
首先,您不应该添加@EnableWebFlux
,因为它会完全禁用Spring Boot进行的自动配置。 Spring MVC应用程序中的@EnableWebMvc
也是如此。
第二,您要混合使用WebFlux注释和WebFlux功能。您正在使用的注释很好,但是ServerResponse
类型只能用于when writing functional handlers。您应该在这里尝试使用ResponseEntity
。