Quali sono i verbi e le azioni dell’URL RESTful migliori / comuni?

Sto cercando di trovare alcune informazioni sulle azioni URL RESTful migliori e più comuni.

ad esempio, quale URL usi per visualizzare i dettagli di un articolo, per modificarlo, aggiornarlo, ecc.

/question/show/ /question/edit/ /question/update/ (this is the post back url) /question/list (lists the questions) 

hmm. grazie a chiunque aiuti 🙂

Utilizza gli URL per specificare i tuoi oggetti, non le tue azioni:

Nota ciò che hai menzionato per la prima volta non è RESTful:

 /questions/show/ 

Invece, dovresti usare i tuoi URL per specificare i tuoi oggetti:

 /questions/ 

Quindi esegui una delle seguenti operazioni su quella risorsa.


OTTENERE:

Utilizzato per ottenere una risorsa, eseguire una query su un elenco di risorse e anche per eseguire query su informazioni di sola lettura su una risorsa.

Per ottenere una risorsa domanda:

 GET /questions/ HTTP/1.1 Host: whateverblahblah.com 

Per elencare tutte le risorse domande:

 GET /questions HTTP/1.1 Host: whateverblahblah.com 

INVIARE:

Utilizzato per creare una risorsa.

Si noti che quanto segue è un errore:

 POST /questions/ HTTP/1.1 Host: whateverblahblah.com 

Se l’URL non è stato ancora creato, non dovresti usare POST per crearlo mentre specifichi il nome. Ciò dovrebbe comportare un errore non trovato della risorsa perché non esiste ancora. Devi prima mettere la risorsa sul server. Potresti sostenere che creando una nuova domanda, stai anche aggiornando la risorsa / domande poiché ora restituirebbe un’altra domanda nella sua lista di domande.

Dovresti fare qualcosa di simile per creare una risorsa usando POST:

 POST /questions HTTP/1.1 Host: whateverblahblah.com 

Nota che in questo caso il nome della risorsa non è specificato, il nuovo percorso URL degli oggetti ti verrà restituito.

ELIMINA:

Utilizzato per eliminare la risorsa.

 DELETE /questions/ HTTP/1.1 Host: whateverblahblah.com 

METTERE:

Utilizzato per creare una risorsa o sovrascriverlo mentre si specifica l’URL delle risorse.

Per una nuova risorsa:

 PUT /questions/ HTTP/1.1 Host: whateverblahblah.com 

Per sovrascrivere una risorsa esistente:

 PUT /questions/ HTTP/1.1 Host: whateverblahblah.com 

… Sì, sono uguali. PUT è spesso descritto come il metodo “modifica”, in quanto sostituendo l’intera risorsa con una versione leggermente modificata, hai modificato ciò che i client otterranno quando faranno successivamente.


Utilizzo di REST nei moduli HTML:

La specifica HTML5 definisce GET e POST per l’elemento del modulo .

L’attributo del contenuto del metodo è un attributo enumerato con le seguenti parole chiave e stati:

  • La parola chiave GET, mapping allo stato GET, che indica il metodo GET HTTP.
  • La parola chiave POST, mapping allo stato POST, che indica il metodo POST HTTP.

Tecnicamente, le specifiche HTTP non ti limitano ai soli metodi. Sei tecnicamente libero di aggiungere qualsiasi metodo tu voglia, in pratica però questa non è una buona idea. L’idea è che tutti sanno che usi GET per leggere i dati, quindi confonderà le cose se decidi di usare READ. Detto ciò…

PATCH:

Questo è un metodo che è stato definito in un RFC formale. È progettato per essere utilizzato quando si desidera inviare solo una modifica parziale a una risorsa, sarebbe usato in modo simile a PUT:

 PATCH /questions/ HTTP/1.1 Host: whateverblahblah.com 

La differenza è che PUT deve inviare l’intera risorsa, non importa quanto grande sia rispetto a ciò che è effettivamente cambiato, mentre PATCH è ansible inviare solo le modifiche.

Supponendo /questions/10 è una domanda valida, quindi il metodo viene utilizzato per interagire con esso.

POST da aggiungere ad esso

PUT per creare o sostituirlo

OTTIENI per vederlo / interrogarlo

e CANCELLARE per bene .. cancellarlo.

L’URL non cambia.

Ho intenzione di uscire su un arto e indovinare che tu intendi cosa sono i controller standard per MVC quando dici “RESTful” urls, dal momento che i tuoi esempi potrebbero essere considerati non “RESTful” (vedi questo articolo).

Dal momento che Rails ha davvero diffuso lo stile URL a cui sembri interessato, offro sotto le azioni del controller predefinito prodotte da ScaffoldingGenerator in Ruby on Rails. Questi dovrebbero essere familiari a chiunque usi un’applicazione Rails.

Le azioni e le viste dello scaffold sono: index, list, show, new, create, edit, update, destroy

Tipicamente lo buildsti come:

 http://application.com/controller// 

Ecco una mapping dei tuoi attuali URL usando il principio REST:

 /question/show/ 

Se identifichi la domanda come una risorsa, allora dovrebbe avere un URL univoco. Usare GET per visualizzarlo (recuperarlo) è la pratica comune. Diventa:

 GET /question/ 

 /question/edit/ 

Ora vuoi che il tuo utente abbia un’altra vista della stessa risorsa che gli consente di modificare la risorsa (magari con i controlli del modulo).

Due opzioni qui, l’applicazione è un’applicazione (non un sito Web), quindi potrebbe essere meglio utilizzare JavaScript per trasformare la risorsa in una risorsa modificabile sul lato client.

Se si tratta di un sito Web, è ansible utilizzare lo stesso URL con informazioni aggiuntive per specificare un’altra vista, la pratica comune sembra essere:

 GET /question/;edit 

 /question/update/ (this is the post back url) 

Questo per cambiare la domanda, quindi PUT è il metodo corretto da usare:

 PUT /question/ 

 /question/list (lists the questions) 

L’elenco di domande è in realtà la risorsa madre di una domanda, quindi è naturalmente:

 GET /question 

Ora potresti aver bisogno di altro:

 POST /question (create a new question and returns its URL) DELETE /question/ (deletes a question if this is relevant) 

Tada 🙂

I tuoi quattro esempi potrebbero essere:

 GET /questions/123 POST (or PUT) /questions/123 q=What+is+the+meaning+of+life POST (or PUT) /questions/123 q=What+is+the+meaning+of+life GET /questions 

Per aggiungere una domanda:

 POST /questions q=What+is+the+meaning+of+life 

Il server risponderà:

 200 OK (or 201 Created) Location: /questions/456