La scelta comune è POST, e ha senso. I verbi "sicuri" (GET, HEAD, OPTIONS, TRACE) sono fuori, perché non possono avere effetti collaterali semantici che cambiano lo stato osservabile dell'applicazione (e l'accesso è tale stato) .
PUT e DELETE sono possibilità teoriche; la risorsa che si sta creando (PUT) e la rimozione (DELETE) sarebbero la sessione dell'utente. Tuttavia, ci sono alcune stranezze su questo: prima di tutto, PUT e DELETE, mentre non sono sicuri come HEAD, dovrebbero ancora essere idempotenti , cioè, effettuare il logout più volte di seguito senza registrare back in dovrebbe essere valido, e quindi accederà di nuovo mentre è ancora loggato. Inoltre, tale doppio login non può alterare lo stato dell'applicazione oltre quello che fa il primo login, che, considerando cose come gli ID di sessione e così via, è problematico. Inoltre, a rigor di termini, l'URL che stai trasmettendo dovrebbe identificare in modo univoco la risorsa che stai spingendo, quindi per essere semanticamente corretto, dovresti mettere a link anziché link , ovvero un identificatore univoco per la sessione dovrebbe essere codificato nel URL - ma poi, l'ID di sessione viene generato insieme alla sessione, quindi l'ID non esiste ancora fino a quando dopo login riuscito.
La semantica del POST è molto più adatta: il tuo URL di accesso (ad esempio, link ) identifica una risorsa (la funzionalità di accesso dell'applicazione ') che stai per "annotare", cioè cambia un aspetto di quella risorsa. A differenza di PUT e DELETE, le richieste POST non devono essere idempotenti, il che significa che più richieste POST identiche possono continuare a cambiare lo stato dell'applicazione - questo è esattamente quello che vuoi.
La descrizione di Wikipedia dei vari verbi è in realtà piuttosto rivelatrice in questo senso:
link