Quali sono le conseguenze dell'uso di verbi anziché di nomi nell'URI dell'API REST?

1

Per le persone che utilizzeranno un'API, è più facile vedere:

/createUser

/getUser/id

/editUser/id

Lo standard prevede l'uso di nomi nell'URI, ad esempio:

/user/ POST (Create a user)
/user/ GET (Get list of users)

Uno sviluppatore sta insistendo sull'uso dei verbi perché è più facile per gli altri. Ma penso che ci debbano essere dei veri debiti tecnici da pagare in seguito, a parte un semplice caso di cattiva "grammatica" e persone che ridono di noi?

    
posta user95437 05.01.2018 - 17:16
fonte

3 risposte

8

La mappatura URL standard per REST ha la risorsa mappata all'URL e ciò che viene eseguito nel metodo HTTP.

Funziona bene quando si interagisce a livello di codice con il proprio endpoint REST. È anche molto rilevabile e coerente: se ottieni un collegamento a una risorsa, sai che puoi provare altri metodi e, se supportati, si comporteranno in un modello CRUD standard.

Tuttavia, può essere un po 'scomodo eseguire il debug da un browser, perché non sono davvero progettati per fare nient'altro che GET dalla barra degli URL - quindi è necessario disporre di plugin aggiuntivi (o usare CURL / altri strumenti).

Sfortunatamente, l'uso della mappatura non standard nella domanda (es. '/ editUser / id') da solo non risolve questo problema - hai ancora bisogno di un corpo per andare con la richiesta, quindi non vedo come lo rende più facile. O molti parametri di query URL, ma che interrompono la simmetria tra le azioni.

Se per "più facile per gli altri" il tuo dev è "più facile per le persone che cercano di accedervi da un browser di base per qualcosa di diverso da GET", allora un modo per farlo sarebbe quello di attenersi alla mappatura delle risorse di base ma (opzionalmente) incollare il verbo / metodo in un parametro di ricerca, ad es / User /? Action = CANC. Continuerò a supportare i metodi HTTP standard e renderò quanto sopra completamente opzionale, non ottimale, e solo per il debug / l'esplorazione manuale.

    
risposta data 05.01.2018 - 17:37
fonte
3

What are the consequences of using verbs instead of nouns in REST API URI?

Nessuno. A. Tutti.

/7dc54421-5573-4b21-ad5e-6d6aa458ea79 è un URI perfettamente fine

link < - è un nome? un verbo? ma scommetto che il tuo browser può capire comunque come GET .

link < - oh no! come possiamo GET una pagina da un dizionario online che definisce un verbo? Dovremmo GET o PATCH questa risorsa?

... o forse funziona solo .

Gli URI sono identificatori ; la codifica delle informazioni in quell'identificatore viene effettuata a discrezione del server e per suo uso.

A developer is insisting on using verbs because it is easier for others. But I think there must be some real technical debts to pay later on, other than just a case of bad "grammar" and people laughing at us?

In realtà, l'ortografia dell'identificatore è una questione di convenzione, soggetta alle preoccupazioni relative alla risoluzione di riferimento . Lo tratti come una convenzione di denominazione variabile; conformarsi all'idioma locale è più importante delle preoccupazioni generali.

Parte del punto di hypermedia in generale è che gli identificatori sono solo identificatori; non proviamo a usare l'ortografia per comunicare le informazioni.

In altre parole, l'ortografia dell'URI non dovrebbe dirti di cosa si tratta.

Ad esempio

<img src="http://example.org/mdn-logo-sm.txt"alt="MDN">

Il browser dovrebbe scappare perché l'URI termina con ".txt"? Ovviamente no; è solo un identificatore

GET /mdn-logo-sm.txt HTTP/1.1
...

200 OK
Content-Type: image/gif

Il browser sa come elaborare la rappresentazione che riceve perché i metadati di risposta identificano il tipo di media del payload. L'ortografia dell'identificatore non ha nulla a che fare con questo.

    
risposta data 05.01.2018 - 18:56
fonte
0

L'utilizzo di verbi nel tuo URL può creare confusione negli utenti umani, a meno che tali URL non presentino moduli per l'esecuzione dell'azione suggerita. Questo è l'unico problema.

L'oggetto identificato dall'URL sarà sempre una risorsa informativa (un sostantivo), che a sua volta può corrispondere a un oggetto, un processo, un concetto reale ecc.

Come accennato, l'unico uso non ambiguo di un verbo è come parte di un nome composto, come /users/adam/edit-form che presenterebbe un modulo (in HTML o XML o qualsiasi altra cosa) per modificare l'utente "adam".

    
risposta data 16.01.2018 - 12:06
fonte

Leggi altre domande sui tag