Spring 模板化的数据休息覆盖控制器 Link
Spring Data Rest override controller for Templated Link
我正在使用 Spring Data REST 将各种域对象公开为资源。
@Entity
class Person() {
//fields
}
public interface PersonRepository implemets PagingAndSortingRepository<Person, Long> {
}
现在 /persons
将映射到存储库方法。
假设我想覆盖 GET 方法。所以我这样做:
@RestController
@RequestMapping("/persons")
public class PersonController {
private PersonRepository repository;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<?> getAll(Pageable pageable, PagedResourcesAssembler<Person> assembler) {
Page<Student> page = repository.findAll();
return ResponseEntity.ok(assembler.toResource(page));
}
}
好的,所以当我点击 http://localhost:8080/persons
时,正如预期的那样,它将由 PersonController::getAll
方法处理。
它将为我提供这个JSON
{
"_links": {
"self": {
"href": "http://localhost:8080/api/persons{?page,size,sort}",
"templated": true
}
},
"_embedded": {
"persons": [
{
"active": true,
"email": "mail@mail.com",
"name": "myname",
"phoneNumber": "1234-456",
"surname": "mysurname",
"userName": "username"
}
]
},
"page": {
"size": 20,
"totalElements": 1,
"totalPages": 1,
"number": 0
}
}
但是,如果我单击 self
link,响应将 不是 从我的自定义控制器处理,而是从原始 @RepositoryRestController
SDR
.
有没有一种方法可以将自定义控制器配置为也包含句柄模板化 href?
http://localhost:8080/persons
对比 http://localhost:8080/api/persons
将 /api
添加到您的控制器请求映射以覆盖 SDR 控制器
我正在使用 Spring Data REST 将各种域对象公开为资源。
@Entity
class Person() {
//fields
}
public interface PersonRepository implemets PagingAndSortingRepository<Person, Long> {
}
现在 /persons
将映射到存储库方法。
假设我想覆盖 GET 方法。所以我这样做:
@RestController
@RequestMapping("/persons")
public class PersonController {
private PersonRepository repository;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<?> getAll(Pageable pageable, PagedResourcesAssembler<Person> assembler) {
Page<Student> page = repository.findAll();
return ResponseEntity.ok(assembler.toResource(page));
}
}
好的,所以当我点击 http://localhost:8080/persons
时,正如预期的那样,它将由 PersonController::getAll
方法处理。
它将为我提供这个JSON
{
"_links": {
"self": {
"href": "http://localhost:8080/api/persons{?page,size,sort}",
"templated": true
}
},
"_embedded": {
"persons": [
{
"active": true,
"email": "mail@mail.com",
"name": "myname",
"phoneNumber": "1234-456",
"surname": "mysurname",
"userName": "username"
}
]
},
"page": {
"size": 20,
"totalElements": 1,
"totalPages": 1,
"number": 0
}
}
但是,如果我单击 self
link,响应将 不是 从我的自定义控制器处理,而是从原始 @RepositoryRestController
SDR
.
有没有一种方法可以将自定义控制器配置为也包含句柄模板化 href?
http://localhost:8080/persons
对比 http://localhost:8080/api/persons
将 /api
添加到您的控制器请求映射以覆盖 SDR 控制器