gpt4 book ai didi

spring-webflux - Spring 5 RouterFunction 状态 415,原因 "Content type ' application/json' 不支持”

转载 作者:行者123 更新时间:2023-12-03 17:36:47 27 4
gpt4 key购买 nike

我正在尝试按照以下代码使用 Spring 5 Router 函数

public class PersonHandler {

private final PersonRepository repository;

public PersonHandler(PersonRepository repository) {
this.repository = repository;
}

public Mono<ServerResponse> listPeople(ServerRequest request) {
System.out.println("List people");
Flux<Person> people = repository.findAll();
return ServerResponse.ok().contentType(APPLICATION_JSON).body(people, Person.class);
}

public Mono<ServerResponse> createPerson(ServerRequest request) {
System.out.println("Insert people");
Mono<Person> person = request.bodyToMono(Person.class);
repository.insert(person).subscribe();
return ServerResponse.ok().build();
}

public Mono<ServerResponse> getPerson(ServerRequest request) {
System.out.println("Get people");
String personName = request.pathVariable("name");
Mono<ServerResponse> notFound = ServerResponse.notFound().build();
Mono<Person> personMono = this.repository.findByName(personName);
return personMono
.flatMap(person -> ServerResponse.ok().contentType(APPLICATION_JSON).body(fromObject(person)))
.switchIfEmpty(notFound);
}
}

这是路由器功能
@Configuration
public class RoutesConfiguration {

@Bean
RouterFunction<?> routes(PersonRepository personRepository) {

PersonHandler handler = new PersonHandler(personRepository);
return nest(path("/person"),
nest(accept(APPLICATION_JSON),
route(GET("/{id}"), handler::getPerson)
.andRoute(method(HttpMethod.GET), handler::listPeople)
).andRoute(POST("/").and(contentType(APPLICATION_JSON)), handler::createPerson));
}
}

当我执行 curl 请求时
curl -X POST -d {"name":"John Doe","age":20} -H "Content-Type: application/json" http://localhost:8081/person

但是,我收到了 POST 请求的错误消息
    reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.web.server.UnsupportedMediaTypeStatusException: Response status 415 with reason "Con
tent type 'application/json' not supported"
Caused by: org.springframework.web.server.UnsupportedMediaTypeStatusException: Response status 415 with reason "Content type 'application/json' not supported
"
at org.springframework.web.reactive.function.server.DefaultServerRequest.lambda$static$0(DefaultServerRequest.java:66) ~[spring-webflux-5.0.0.RELEASE
.jar:5.0.0.RELEASE]
at reactor.core.publisher.Mono.lambda$onErrorMap$19(Mono.java:2354) ~[reactor-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at reactor.core.publisher.Mono.lambda$onErrorResume$21(Mono.java:2446) ~[reactor-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:88) ~[reactor-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at reactor.core.publisher.Operators.error(Operators.java:175) ~[reactor-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at reactor.core.publisher.MonoError.subscribe(MonoError.java:52) ~[reactor-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]

任何人都可以帮助解释此错误的原因是什么?谢谢

最佳答案

这正是发生在我身上的事情。我使用 Maven 并通过清除我的 m2 缓存解决了这个问题:

rm -rf ~/.m2/repository/* (my .m2 folder is in my home directory)

然后我跑了 mvn clean install并重新启动了我的应用程序并没有收到异常。

关于spring-webflux - Spring 5 RouterFunction 状态 415,原因 "Content type ' application/json' 不支持”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880110/

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