Spring Data Rest,其URL格式为/ foo / {id} / bar

时间:2019-04-25 19:19:29

标签: java rest spring-data-rest

为了符合内部标准,我们提供了采用以下格式的URL

/RESOURCE/{id}/COMPONENT

试图做类似的事情

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

不起作用(尽管它确实接受/RESOURCE/{ID}处的请求)。有办法使这项工作吗?

1 个答案:

答案 0 :(得分: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设计,但这种情况似乎是不可能的。