Risorse nidificate RESTful

3

Ho una risorsa profile . I profili possono avere un genitore e un numero arbitrario di profili figlio.

Qual è il modo migliore per modellarlo in uno scenario RESTful?

Ho pensato a un numero di soluzioni diverse, ciascuna con pro e contro:

/profiles/:profile_id/children

+ è chiaro che stiamo interrogando la profile risorsa

- l'ultimo frammento dell'URL non dichiara che verrà restituito un elenco di profili

/parents/:parent_id/profiles

+ è non chiaro che stiamo interrogando la profile risorsa

- L'ultimo frammento dell'URL afferma chiaramente che verrà restituito un elenco di profili

/profiles/:profile_id/profiles

+ è chiaro che stiamo interrogando la profile risorsa

+ l'ultimo frammento dell'URL afferma chiaramente che verrà restituito un elenco di profili

- la relazione gerarchica potrebbe non essere chiara

Qualche pensiero o suggerimento su come modellare chiaramente questo scenario?

    
posta Andrea Casaccia 22.09.2016 - 14:29
fonte

1 risposta

5

Ok, quindi REST non dice nulla su come dovrebbero apparire gli URI. Non vi è alcun presupposto o intenzione che gli URI siano leggibili. REST dice di usare HATEOAS , che in breve significa che i client devono operare su collegamenti con nome, non URI.

GET /profiles/12
{
    "id": 12,
    ...,
    "links": {
        "self": "/profiles/12",
        "parent": "/whatever-uri-you-want",
        "children": "/whatever-uri-you-want"
    }
}

In questo caso, i clienti che desiderano che i figli chiedano il profilo per l' children URI e GET . I clienti non si preoccupano di cosa sia l'URI, e puoi addirittura cambiarlo con un po 'di sicurezza.

Supponendo che stai utilizzando REST per indicare realmente "API Web" e richiedi ai tuoi clienti di creare manualmente URI, allora andrei con il suggerimento di @ Mac70 e fare qualcosa di simile

/profiles/{id}/child-profiles
    
risposta data 22.09.2016 - 15:24
fonte

Leggi altre domande sui tag