[SPRING] Spring 데이터 나머지 특정 저장소에 사용자 정의 끝점 추가
SPRINGSpring 데이터 나머지 특정 저장소에 사용자 정의 끝점 추가
기존 사용자 저장소에 사용자 지정 검색 끝점을 추가하고 싶습니다.
내 사용자 저장소는 다음과 같습니다.
@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
}
}
}
Invites와 같은 다른 엔드 포인트의 경우 :
{
"_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
}
}
}
이것은 어떻게 사용자에게만 제한 될 수 있습니까? 감사
해결법
-
==============================
1.초대장 끝 점이 RepositorySearchesResource를 반환한다고 가정합니다. ResourceProcessor는 spring-data-rest가 RepositorySearchesResource를 직렬화 할 때마다 호출됩니다. 사용자와 초대에 대해 다른 링크를 원한다면 몇 가지 대안이 있습니다.
초대장 끝 점이 RepositorySearchesResource를 반환한다고 가정합니다. ResourceProcessor는 spring-data-rest가 RepositorySearchesResource를 직렬화 할 때마다 호출됩니다. 사용자와 초대에 대해 다른 링크를 원한다면 몇 가지 대안이 있습니다.
from https://stackoverflow.com/questions/34031913/spring-data-rest-add-custom-endpoint-to-specific-reposiotry by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 소비자 구성을 2 개 사용하면 소비자 처리량이 느려짐 (0) | 2019.04.28 |
---|---|
[SPRING] IntelliJ IDEA JBoss에서 MyEclipse Tomcat으로 이동 한 후 지원되지 않는 major.minor 버전 51.0 오류 (0) | 2019.04.28 |
[SPRING] 봄 mvc에서 래핑 된 예외 처리 (0) | 2019.04.28 |
[SPRING] 응용 프로그램 마이그레이션 중에 염두에 두어야 할 사항 : ColdFusion에서 Spring으로 (0) | 2019.04.28 |
[SPRING] 암호화 된 암호가 BCrypt처럼 보이지 않습니다. (0) | 2019.04.28 |