Я хотел бы добавить конечную точку пользовательского поиска в мой существующий репозиторий пользователей.Spring Data Rest Добавить пользовательскую конечную точку в конкретную репозиторию
Мой пользователь Repository выглядит следующим образом:
@RepositoryRestResource(collectionResourceRel="users", path="users")
public interface UserRepository extends PagingAndSortingRepository<User, Long>{
User findByUsername(String username);
}
Обычай контроллер:
@BasePathAwareController
@RequestMapping("users/search")
public class CustomController implements ResourceProcessor<RepositorySearchesResource>, ResourceAssembler<User, Resource<User>> {
@Autowired
UserRepository userReposiotry;
@Autowired
private EntityLinks entityLinks;
@RequestMapping(value = "findFirst", produces = "application/json")
@ResponseBody
public ResponseEntity<Resource<User>> findFirstUser() {
Resource<User> resource = toResource(userReposiotry.findOne(1L));
return new ResponseEntity<Resource<User>>(resource, HttpStatus.OK);
}
@Override
public RepositorySearchesResource process(RepositorySearchesResource resource) {
LinkBuilder lb = entityLinks.linkFor(User.class, "username");
resource.add(new Link(lb.toString() + "/search/findFirst", "findFirst"));
return resource;
}
@Override
public Resource<User> toResource(User user) {
Resource<User> resource = new Resource<User>(user);
return resource;
}
}
Это возвращает правильный поиск конечной точки для пользователей:
{
"_links": {
"findByUsername": {
"href": "http://localhost:8080/api/users/search/findByUsername"
},
"self": {
"href": "http://localhost:8080/api/users/search"
},
"findFirst": {
"href": "http://localhost:8080/api/users/search/findFirst",
"templated": true
}
}
}
но и для других конечные точки, такие как Приглашения:
{
"_links": {
"findUserByInvite": {
"href": "http://localhost:8080/api/invites/search/findUserByInvite"
},
"self": {
"href": "http://localhost:8080/api/invites/search"
},
"findFirst": {
"href": "http://localhost:8080/api/invites/search/findFirst",
"templated": true
}
}
}
Как это можно ограничить только для пользователей? Спасибо
Привет, Приглашение такое же, как интерфейс userRepository. Используя второе предложение, мне удалось это сделать, добавив \t if (resource.getDomainType() == User.class) в мой процесс RepositorySearchesResource. Но мне было интересно, есть ли лучший способ сделать это? благодаря – user1601401