Referindu-se la adresele URL din API-urile RESTful

Iată câteva adrese URL standard ale unui API RESTful.

Primul preia un singur utilizator, al doilea - o colecție de utilizatori (să zicem 20).

Care este termenul " REST pentru a se referi la aceste adrese URL? Este corect să le menționăm ca resurse? Dacă prima este o resursă, ar trebui ca a doua să fie o colecție de resurse sau ar trebui să fie mai degrabă o resursă de colectare de tip?

0
Pentru a fi chiar mai precis: URL-ul este un locator sau un identificator. Adresa URL nu este o resursă, ci o resursă.
adăugat autor fumanchu, sursa

1 răspunsuri

Fiecare URI pe o aplicație RESTful este o resursă, această descriere este suficientă.

Resursele care se leagă de mai multe resurse de același tip pot fi numite colecții, dar nu există un nume oficial pentru acest lucru. Fiecare resursă, fiind o colecție sau nu, poate avea legături.

Legăturile dintre resurse sunt partea Hypermedia a unui sistem RESTful. Recent, un nou termen a venit pentru acest lucru: HATEOAS, Hypermedia ca motor al statului de aplicare.

Este o practică obișnuită de a numi colecțiile în plural, așa că eșantionul /users/ pare corect. Utilizatorul 123 este un copil al colecției utilizatorilor , deci poate fi mai bine să îl plasați și sub /users/123 în plural.

O aplicație RESTful, HATEOAS ar răspunde unei liste de linkuri pe /users/ indicând resursele individuale. Ceva asemănător cu:

{
    "links": [
        {
            "href" : "/users/123/"
            "title" : "Alexandre Gaigalas"
        },
        {
            "href" : "/users/125/"
            "title" : "John Doe"
        },
    ]
}

Sau în XML:

<link href="/users/123" title="Alexandre Gaigalas">
...

Pot fi furnizate informații suplimentare, cu excepția obiectului links în JSON sau tag-uri în XML.

Aceste legături consolidează relația hypermedia RESTful între resurse. Probele pe care le-am dat sunt în mare parte ierarhice între colecții și indivizi, dar pot fi declarate și alte tipuri de legături:

<link href="/users/123/picture.jpg" title="Alexandre Gaigalas avatar" rel="picture">

Terminologia colecției a fost creată mai ales pentru a obține o implementare RESTful în limbile de programare, astfel încât dezvoltatorii pot grupa și manipula mai ușor grupuri de resurse similare.

Când este prezent, parametrii de șir de interogări identifică și alte resurse, astfel încât /users /? Since = 2009 este diferit de /users/. Sunt ambele resurse diferite, deși foarte asemănătoare.

Fragmentele de identificare, deși nu sunt trimise oricum la server, sunt considerate și resurse diferite, astfel încât /users/123 # bio este diferit de /users/123 .

Dacă este posibil, o paginare mai semnificativă este mai bună. Numerele paginilor sunt greu de manevrat, pentru că se schimbă foarte mult. Dacă există o colecție actualizată frecvent (de exemplu, o listă de întrebări StackOverflow), pagina unu se modifică frecvent, iar utilizatorul poate pierde elemente care se schimbă de la pagina 1 la pagina 2. Cele mai multe colecții pot fi paginate după dată sau alfabetic. Numerele incrementale ale paginilor nu sunt greșite, dar există mecanisme mai bune.

0
adăugat
Dacă URI conține parametri (adică http://api.example.com/users?limit=5&offset=10 ), este corect corect să o referiți la acesta ca pe o resursă? Dacă este, care ar fi numele acelei resurse? Încă sunt "utilizatori"?
adăugat autor Emanuil Rusev, sursa
Hm ... Este corect să te referi la orice adresă URL într-un API RESTful ca resursă?
adăugat autor Emanuil Rusev, sursa
Puteți explica de ce este mai bine să utilizați /users/123 peste /user/123 ?
adăugat autor Emanuil Rusev, sursa
Voi edita răspunsul pentru a include considerente despre parametrii șirului de interogare!
adăugat autor alganet, sursa
Făcut că =) Sper că ajută cumva!
adăugat autor alganet, sursa
Este corect să vă referiți la orice adresă URL ca resursă! RESTful este atunci când acea resursă urmează stilul de arhitectură REST, care se bazează pe 5 principii: client-server, apatrid, cacheabil, stratificat și uniform.
adăugat autor alganet, sursa
E mai intuitiv. Dacă cineva aterizează în /users/123/ tipul poate prezice cu ușurință că /users/ ar funcționa probabil, de asemenea. Este ceva asemănător cu dosarele, iar utilizatorii sunt într-o oarecare măsură mai familiarizați cu acest tip de denumire.
adăugat autor alganet, sursa
De asemenea, legarea în hypermedia este mai ușoară. Deoarece link-urile pot fi relative, dacă utilizatorul atinge /users/ linkul poate fi href = 123 . Dacă pluralul/singularul nu se potrivește, legătura trebuie să fie ceva de genul href =/user/123 , mai verbose.
adăugat autor alganet, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT