В настоящее время я пытаюсь перенести свое приложение с весенней загрузки 1.5.x на 2.x.x в реактивном стеке. Я столкнулся с какой-то странной проблемой, которую не могу понять. Надеюсь, кто-то знает решение этой проблемы.
Я реализовал API для получения токена пользователя jwt в качестве поля «Авторизация» в заголовке. API - это метод POST, который получает определенные данные json от пользователя в теле, переходит на бэкэнд и обрабатывает их. К сожалению, я продолжаю получать ошибку http 404, когда добавляю в заголовок, нормальный 200, когда я удаляю ее в почтальоне. Вот мой контроллер.
@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))));
}
}
Вот моя простая конфигурация безопасности
@Configuration
@EnableWebFluxSecurity
@EnableWebFlux
public class ResourceServerConfig implements WebFluxConfigurer {
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http, FirebaseAuthenticationManager manager) {
http
.authorizeExchange().anyExchange().permitAll()
.and().csrf().disable();
return http.build();
}
}
Кто-нибудь может указать мне на проблему. Это похоже на проблему отсутствия конфигурации.




Я вижу две проблемы с вашими фрагментами кода.
Во-первых, вам не следует добавлять @EnableWebFlux, поскольку он полностью отключает автоконфигурацию, выполняемую Spring Boot. То же самое и для @EnableWebMvc в приложении Spring MVC.
Во-вторых, вы смешиваете аннотации WebFlux и функционал WebFlux. Аннотации, которые вы используете, подходят, но тип ServerResponse следует использовать только при написании функциональных обработчиков. Вместо этого вы должны попробовать здесь использовать ResponseEntity.
благодаря. Это был фрагмент, набранный, когда я переключался между функциональными и аннотациями. Оказывается, проблема была в почтальоне. создал новую вкладку, и она сработала.