¿Cuál es la forma correcta de anidar los recursos en el modelo REST?

14

Estoy diseñando una API REST de servicio y me quedé atascado en la forma correcta de anidar los recursos.

Recursos: socios, tickets, configuración

Conexiones entre recursos:

  • socio tiene muchas entradas,
  • el socio tiene un conjunto de configuraciones,

Lógica de negocio:

  • puede enumerar a todos los socios como usuario anónimo,
  • puede agregar un nuevo ticket a un socio específico como usuario anónimo,
  • el único socio puede listar sus boletos,
  • solo el socio puede modificar sus tickets,
  • solo el socio puede mostrar la configuración,
  • solo el socio puede modificar la configuración,

Lo que hice hasta ahora:

Recursos de socios

GET / partners: enumera todos los socios
GET / partners /: id: muestra los detalles del socio especificado por: id parámetro
GET / partners /: partner_id / tickets - lista de tickets de socios
GET / partners /: partner_id / tickets /: id - detalles del ticket del socio especificado
POST / partners /: partner_id / tickets - guarda el nuevo ticket
PUT / partners /: partner_id / tickets /: id: actualiza el ticket especificado por: id parámetro
GET / partners /: partner_id / settings - muestra la configuración de los socios
PUT / partners /: partner_id / settings - actualice la configuración del socio

Problema/Pregunta

¿Sería la forma correcta de dividir los recursos anidados (tickets, configuraciones) para separar los recursos o duplicarlos como recursos separados?

Por ejemplo,

GET / tickets /: id
POST / tickets
PUT / tickets /: id

GET / settings
PUT / configuración

    
pregunta Przemysław Ciąćka 19.07.2013 - 16:43

1 respuesta

8

HATEOAS :

GET /partners/:partner_id/tickets : lista de tickets del socio, es decir, devuelve una lista de URI, probablemente de la forma /tickets/:id

GET /partners/:partner_id/tickets/:id - no es necesario

POST /partners/:partner_id/tickets : crea un ticket y se asocia al socio, devuelve un 201 con el nuevo URI, del formulario /tickets/:id

    
respondido por el Javier 19.07.2013 - 16:58

Lea otras preguntas en las etiquetas