【问题标题】:spring rest data plural urlspring rest data 复数 url
【发布时间】:2014-10-25 03:20:17
【问题描述】:

我有一个名为 StoreType.java 的域类,它由下面的 spring 存储库公开

public interface StoreTypeRepository extends PagingAndSortingRepository<StoreType, Short> {

}

当我使用 url http://localhost:8080/my-persistence/jpa/storetypes 访问它时,它返回 404。

如果我将域类更改为 Storetype(没有驼峰式大小写),它可以正常工作并返回 200 OK。

我还有几个使用单一世界域类的存储库,例如 Store.java 、 Country.java ,这些工作正常,默认情况下它们显示为域类名称的复数。

我知道 spring 暴露的 url 是域类的复数,但不确定它为什么不暴露它。我可以使用@RepositoryRestResource(path="/storetypes") 覆盖它,但我想知道如果域类名称以驼峰命名,则默认休息 url 是什么。

【问题讨论】:

    标签: rest spring-data-rest


    【解决方案1】:

    您似乎已经通过将@RepositoryRestResource( path="/storetypes" ) 注释指定为the documentation 状态来回答您的问题。

    Spring Data REST 公开了一个集合资源,该集合资源以导出​​的存储库正在处理的域类的非大写复数版本命名。资源名称和路径都可以使用存储库接口上的@RepositoryRestResource 进行自定义。

    在这种情况下,您的命名约定使用 StoreTypeRepository 似乎是正确的,但是有一件事让我对您的存储库定义感到困惑...我不确定您为什么将 type 参数设置为 PagingAndSortingRepository&lt;StoreType, Short&gt; 但我很确定这是不正确的第二个类型参数的类型应该是Long.

    【讨论】:

    • 是的,你是对的,因为我已经添加了 path=/storetypes,所以我的问题已经解决,但我的问题是,如果我有类似 StoreType 的存储库,spring 生成的默认路径应该是什么骆驼案。如果我不使用骆驼案,那么它就像你说的那样工作。
    • 我已将 short 定义为类型,因为我知道我的商店不能增长超过 32767,它是 mysql smallint,在 java 中表示为 short。 mysql 中的 SMALLINT 是 2 位,如果我选择 BINGINT,那么它是 8 位。
    • 好吧,我想没关系。我仍然很困惑为什么您的课程不能使用驼峰式课程名称。您可能已经发现了一个错误。您可以尝试向spring data 的跟踪器提交错误。
    • 谢谢埃迪。我在弹簧数据休息下打开了一个错误。 jira.spring.io/browse/DATAREST-402
    • storeTypes StoreType 的大写复数形式 :)
    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2021-04-18
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    相关资源
    最近更新 更多