[SPRING] RepositoryRestResource-s와 일반 컨트롤러가 모두있는 Spring REST HATEOAS의 루트 요청 int에 대한 사용자 정의 응답
SPRINGRepositoryRestResource-s와 일반 컨트롤러가 모두있는 Spring REST HATEOAS의 루트 요청 int에 대한 사용자 정의 응답
두 개의 저장소가 있다고 가정 해 보겠습니다.
@RepositoryRestResource(collectionResourceRel = "person", path = "person")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {
List<Person> findByLastName(@Param("name") String name);
}
과
@RepositoryRestResource(collectionResourceRel = "person1", path = "person1")
public interface PersonRepository1 extends PagingAndSortingRepository<Person1, Long> {
List<Person1> findByLastName(@Param("name") String name);
}
하나의 정규 컨트롤러 :
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public HttpEntity<Hello> hello(@RequestParam(value = "name", required = false, defaultValue = "World") String name) {
Hello hello = new Hello(String.format("Hello, %s!", name));
hello.add(linkTo(methodOn(HelloController.class).hello(name)).withSelfRel());
return new ResponseEntity<>(hello, HttpStatus.OK);
}
}
이제 http : // localhost : 8080 /에 대한 응답은 다음과 같습니다.
{
"_links" : {
"person" : {
"href" : "http://localhost:8080/person{?page,size,sort}",
"templated" : true
},
"person1" : {
"href" : "http://localhost:8080/person1{?page,size,sort}",
"templated" : true
}
}
}
하지만 나는 이런 식으로하고 싶어.
{
"_links" : {
"person" : {
"href" : "http://localhost:8080/person{?page,size,sort}",
"templated" : true
},
"person1" : {
"href" : "http://localhost:8080/person1{?page,size,sort}",
"templated" : true
},
"hello" : {
"href" : "http://localhost:8080/hello?name=World"
}
}
}
해결법
-
==============================
1.
@Component public class HelloResourceProcessor implements ResourceProcessor<RepositoryLinksResource> { @Override public RepositoryLinksResource process(RepositoryLinksResource resource) { resource.add(ControllerLinkBuilder.linkTo(HelloController.class).withRel("hello")); return resource; } }
~에 근거하여
-
==============================
2.Bean으로 등록 된 Person 자원에 대한 ResourceProcessory가 있어야합니다. https://stackoverflow.com/a/24660635/442773을 참조하십시오.
Bean으로 등록 된 Person 자원에 대한 ResourceProcessory가 있어야합니다. https://stackoverflow.com/a/24660635/442773을 참조하십시오.
from https://stackoverflow.com/questions/25783487/custom-response-for-root-request-int-the-spring-rest-hateoas-with-both-repositor by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] java config에 http 보안 필터 추가 (0) | 2019.01.27 |
---|---|
[SPRING] Spring 3 및 NTLM 인증 (0) | 2019.01.27 |
[SPRING] ResponseEntity <T>와 @ResponseBody의 차이점은 무엇입니까? (0) | 2019.01.26 |
[SPRING] 스프링 MVC : @RequestParam과 @ModelAttribute의 차이점을 설명하십시오. (0) | 2019.01.26 |
[SPRING] Spring 3.x JSON 상태 406 "요청에 따라 수용 할 수없는 특성"accept "headers ()" (0) | 2019.01.26 |