Я работаю над spring-boot-1.5.8. Я хотел бы добавить ссылку гипермедиа (HATEOAS) в мой проект, и я ее реализовал. Но гиперссылки не в правильном формате. Вы можете найти проект здесь
Модель
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Person extends ResourceSupport {
private String firstName;
private String lastName;
private int age;
private String sex;
private String personUid;
private String personId;
}
Контроллер
@GetMapping(value = "/getAllPersonHal")
public ResponseEntity<List<Person>> getPersonListHal(){
List<PersonDTO> allPersons = personRepository.findAll();
List<Person> personList = new ArrayList<>();
for (PersonDTO personDTO : allPersons) {
Person person = new Person();
modelMapper.map(personDTO,person);
person.add(linkTo(methodOn(PersonController.class).getPersonById(personDTO.getId())).withSelfRel());
person.add(linkTo(methodOn(PersonController.class).getPersonById(personDTO.getId())).withRel("persons"));
person.add(linkTo(methodOn(PersonController.class)
.getPersonById(personDTO.getId()))
.withRel("urn:persons"));
personList.add(person);
}
return new ResponseEntity<>(personList, HttpStatus.OK);
}
При попадании в API, получая следующий ответ,
АКТУАЛЬНЫЙ ВЫХОД
[
{
"firstName": "Philip",
"lastName": "webb",
"age": 23,
"sex": "M",
"personUid": "1994",
"personId": "26",
"links": [
{
"rel": "self",
"href": "http://localhost:9086/getPersonById/26"
},
{
"rel": "persons",
"href": "http://localhost:9086/getPersonById/26"
},
{
"rel": "urn:persons",
"href": "http://localhost:9086/getPersonById/26"
}
]
}]
Ожидаемый результат
[
{
"firstName": "Philip",
"lastName": "webb",
"age": 23,
"sex": "M",
"personUid": "1994",
"personId": "26",
"links": {
"self":{
"href": "http://localhost:9086/getPersonById/26"
},
"persons":{
"href": "http://localhost:9086/getPersonById/26"
},
"urn:persons":{
"href": "http://localhost:9086/getPersonById/26"
}
}
}]
Я не уверен, что мне нужно сделать, чтобы получить ожидаемый результат.
Кроме того, наряду с атрибутом «href» и ссылками я хотел бы добавить еще немного информации о ссылках, таких как тип (GET / POST / PUT), заголовки, accept-type и т. Д.
Любой намек или помощь должны быть заметны.