我定义了以下RestRepository
以仅公开GET /cars
:
@RepositoryRestResource
public interface CarRepository extends Repository<Car, String> {
@RestResource
List<Car> findAll();
}
我还放置了以下注释以仅公开带注释的存储库:
spring.data.rest.detection-strategy=annotated
致电GET /cars
时一切正常,但是如果致电PATCH /cars/test
,则会收到以下异常(带有相关的500状态代码):
java.lang.IllegalStateException: Repository doesn't have a find-one-method declared!
at org.springframework.data.repository.support.ReflectionRepositoryInvoker.lambda$invokeFindById$1(ReflectionRepositoryInvoker.java:143)
...
相反,如果我调用DELETE /cars/test
,则会得到405不允许的方法(似乎更正确)。
这是Bug还是Spring Data Rest的预期行为?如果打算这样做,如何PATCH
被正常禁用?