Spring Data Rest with url of format / foo / {id} / bar

问题描述 投票:1回答:1

为了符合我们的内部标准,我们拥有采用该格式的URL

/RESOURCE/{id}/COMPONENT

试着做点什么

@RestResource(path = "/RESOURCE/{id}/COMPONENT")
public Optional<Resource> findById(long id);

不起作用(它确实接受/RESOURCE/{ID}的请求)。有没有办法让这项工作?

java rest spring-data-rest
1个回答
0
投票

据我所知,从spring data rest documentation,它似乎不可能。

你可以做类似的事情,称之为http://localhost:8080/users/search/RESOURCE?id=1

@RestResource(path = "/RESOURCE")
public Optional<Resource> findById(@Param("id")long id);

但是,如果您将使用类似@RestResource(path = "/RESOURCE/{id}/COMPONENT")的URL,那么它将返回

{
"_links": {
    "findById": {
        "href": "http://localhost:8080/users/search/RESOURCE/%7Bid%7D/COMPONENT{?id}",
        "templated": true
    },
    "self": {
        "href": "http://localhost:8080/users/search"
    }
 }
}

从这里可以看出,spring无法解析URL并且它会产生无效的字符问题。我可以理解你正在尝试使用rest api设计,但似乎不可能出现这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.