Pergunta

Estou projetando uma API REST e, para ser o mais tranquilo possível, quero implementar o HATEOAS nas respostas json.

Se as entidades vinculadas não estiverem presentes no banco de dados, digamos, por exemplo, que cada usuário tenha uma entidade de passaporte, mas se alguém não tiver, quero enviar o conjunto de links rel e href como este:

{
"links": [
{
  "rel": "drivingLicence",
  "href": "http://localhost:9090/api/v1/drivingLicence/6"
},
{
  "rel": "passport",
  "href": null
},
{
  "rel": "self",
  "href": "http://localhost:9090/api/v1/user/4028818347818fd80147819111d60001"
}
 ],
  "userId": "4028818347818fd80147819111d60001",
  "userName": "username",
  "fullName": "Some User",
  "activeFlag": "ACTIVE",
  "createTimestamp": 1406628074000,
  "updateTimestamp": 1505697126548
}

Existe alguma maneira de conseguir isso usando Spring HATEOAS ou manualmente, tenho que verificar se há nulo e definir href como nulo.

Foi útil?

Solução

Não há como fazer isso com a classe Link integrada, pois ela não permite que href seja nulo ou vazio (verifica no construtor).Talvez você possa derivar de Link e passar href não vazio, mas substituir getHref para retornar nulo.

FWIW:nunca vi o href como estratégia nula.Eu vi o link e, se ele retornar 404, isso significa que não está presente e simplesmente não possui o link.Como cliente hipermídia, ficaria realmente surpreso em ver href de null... mas este é um novo campo com novas práticas acontecendo o tempo todo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top