У меня есть метод контроллера, который отвечает за возвращение некоторых данных вместе с полезными ссылками для клиентского приложения.
@GetMapping(value = "/{uniqueId}")
@ResponseStatus(value = HttpStatus.OK)
public HttpEntity<UserProfileMinimalDto> getUserMinimal(@PathVariable String uniqueId) {
UserProfileMinimalDto userDto = userProfileService.getProfileMinimal(uniqueId);
userDto.add(
entityLinks.linkToSingleResource(UserProfileController.class, uniqueId),
linkTo(methodOn(UserJobController.class).getUserJobs(uniqueId)).withRel(REL_EXPERIENCES)
);
Другой контроллер
@RestController
@RequestMapping(PROFILES)
@ExposesResourceFor(UserJob.class)
public class UserJobController {
@PostMapping(value = "/{uniqueId}"+"/job" )
@ResponseStatus(value = HttpStatus.CREATED)
public HttpEntity<UserJob> getUserJobs(@PathVariable String uniqueId) {
System.out.println("user jobs");
return new ResponseEntity<UserJob>(new UserJob(), HttpStatus.OK);
}
}
Это возвращает мнессылки:
"_links": {
"self": {
"href": "http://localhost:8085/api/v1/profiles/theCoder"
},
"experiences": {
"href": "http://localhost:8085/api/v1/profiles/theCoder/job"
}
}
Но я хочу добиться таких же результатов, используя EntityLinks
.Как можно видеть, я выставил UserJobController
как ресурс UserJob
, чтобы я мог использовать его с EntityLinks
Так что я попробовал описанные ниже методы, но ни один из них не работал.
entityLinks.linkFor(UserJob.class, uniqueId).withRel(REL_EXPERIENCES),
entityLinks.linkFor(UserJob.class, uniqueId, "/job").withRel(REL_EXPERIENCES)
Но оба из нихreturn
"experiences": {
"href": "http://localhost:8085/api/v1/profiles"
}
Что я здесь не так делаю?Или EntityLinks
не предназначен для использования таким образом?