将标头添加到请求时的Webflux Http 404响应

时间:2018-12-19 15:40:38

标签: java spring-boot spring-webflux

我目前正在尝试将我的应用程序从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))));
    }
}

任何人都可以指出我的问题。当然,这似乎缺少配置问题。

1 个答案:

答案 0 :(得分:0)

我可以看到您的代码段有两个问题。

首先,您不应该添加@EnableWebFlux,因为它会完全禁用Spring Boot进行的自动配置。 Spring MVC应用程序中的@EnableWebMvc也是如此。

第二,您要混合使用WebFlux注释和WebFlux功能。您正在使用的注释很好,但是ServerResponse类型只能用于when writing functional handlers。您应该在这里尝试使用ResponseEntity