formato - json javascript
¿Cómo debo manejar los enlaces y las referencias de HATEOAS en JSON? (3)
Creo que es así que puedes ofrecer enlaces múltiples basados en el método http.
p.ej
"links": [
{"rel": "sender", "method":"post", "href":"http://example.org/entity/1"},
{"rel": "sender", "method":"put", "href":"http://example.org/entity/1"}, ...
]
tal vez podrías adaptar eso a tu idea
"sender": {
"href":"http://example.org/entity/1",
"methods": ["put","post"]
}
Estoy en el proceso de diseñar una API REST y ser lo más RESTANTE posible. Quiero incorporar HATEOAS en las respuestas json.
Agregar direcciones URL a los recursos relacionados es bastante fácil, pero hubo cierta discusión sobre la estructura a usar para esos enlaces.
MUCHOS artículos que encontré usan una estructura tomada de fuentes de ATOM :
"links": [
{"rel": "self", "href":"http://example.org/entity/1"},
{"rel": "friends", "href":"http://example.org/entity/1/friends"}, ...
]
Esto generó algunas preguntas:
¿Por qué usar una matriz como contenedor? De acuerdo con un desarrollador de JavaScript que conozco, el acceso a los enlaces sería más fácil con los enlaces como propiedades de un objeto. Por ejemplo:
"self": { "href":"http://example.org/entity/1" }, /* (facebook uses this) */ "friends": { "href":"http://example.org/entity/1/friends", "type": "..."}
¿Existe una estructura json común (además de la adaptación del átomo de nuevo) para describir las referencias en las propiedades de los recursos? (por ejemplo, el remitente de un mensaje).
La referencia probablemente debería resolverse como una url nuevamente, pero ¿sería malo incluir también la identificación simple? algo así como:
"sender": { "id": 12345, "href": "resource-uri" }
Mi forma de pensar es que mientras HATEOAS hace que un cliente no necesite muchos conocimientos para usar una API, soy un poco reacio a eliminar la posibilidad de UTILIZAR ese conocimiento (como acceder a la imagen de perfil construyendo el enlace). del lado del cliente sin buscar primero al usuario).
En lo que respecta a la estructura, puedes intentar mirar HAL ( http://stateless.co/hal_specification.html ) o JSON-LD: ( http://json-ld.org/ )
Reanudé este tema en el grupo de API de API-Craft y obtuve excelentes respuestas.
Las principales ventajas del diseño de matriz son:
- múltiples enlaces para la misma relación
- relaciones múltiples para el mismo enlace sin escribir el enlace de nuevo
- la capacidad de ordenar los enlaces
El mapa de causa tiene mejor accesibilidad.
En cuanto a la estructura, hay muchas posibilidades:
- JSON-HAL: http://blog.stateless.co/post/13296666138/json-linking-with-hal o también http://stateless.co/hal_specification.html
- JSON-LD: http://json-ld.org/ (opcionalmente usando el vocabulario de Hydra )
- JSON-Schema: http://json-schema.org/ (el Meta-Esquema Hyper en la parte inferior de la página)
- Colección + JSON: http://amundsen.com/media-types/collection/
Supongo que iré con HAL, ya que es la solución más limpia, el resto parece un poco ... extraño para json.