2011-07-21 14 views
5

¿Es una buena práctica usar URI en representación JSON (o XML) de recursos REST, por ejemplo¿La representación JSON de los recursos REST debe usar URI para los recursos relacionados?

Por ejemplo, para un recurso que tiene una lista de archivos adjuntos, donde cada archivo adjunto tiene una identificación que se puede utilizar para recuperarlo utilizando una URL como http://myserver.com/resources/attachments/:

{ 
    fileName: "screenshot.png" 
    contentType: "application/octet-stream" 
    id: 52004 
} 

¿Debo también añadir un elemento URI como

{ 
    fileName: "screenshot.png" 
    contentType: "application/octet-stream" 
    id: 52004 
    uri: /resources/attachments/52004 
} 

Respuesta

8

Sí, creo que debería incluir un enlace a cada elemento de la colección. Una API no es RESTful (y, lo que es más importante, no es tan útil) sin los enlaces. Si cree que un cliente humano preferiría tener un enlace que instrucciones sobre cómo solicitar un elemento por ID, lo mismo se aplica a un cliente no humano. También debe dar al cliente una idea de cómo el artículo se relaciona con el recurso actual, proporcionando una relación de enlace:

link : { uri: "/resources/attachments/52004", rel: "/rels/file-attachment" } 

John

+1

Y si lo hace, entonces el miembro "id" es completamente redundante. – fumanchu

+0

@fumanchu Buen punto –

+0

El parámetro "id" no es completamente redundante. Tener una ID en la respuesta permite al usuario final identificar de manera única ese recurso en refactorizaciones API, versiones de url y, potencialmente, como filtros para otras llamadas que hacen referencia a ese recurso. – trcarden

0

Si sería bastante inútil, ya que a pesar de ello necesitará enviar la información de los s erver si el usuario solicitó el recurso y obtendría el recurso de su id en lugar de su URI.

Además, a veces algunos recursos no requieren un URI porque nunca se solicitarán o no se pueden solicitar directamente.

+0

partir de la entrada de Wikipedia sobre RESTO: "Un recurso puede ser esencialmente cualquier coherente y concepto significativo que puede abordarse ". En la web, la forma de identificar un recurso es a través de un URI, no una ID de base de datos. –

Cuestiones relacionadas