Use URLs para especificar seus objetos, não suas ações:
Observe que o que você mencionou primeiro não é RESTful:
/questions/show/<whatever>
Em vez disso, você deve usar seus URLs para especificar seus objetos:
/questions/<question>
Em seguida, você executa uma das operações a seguir nesse recurso.
PEGUE:
Usado para obter um recurso, consultar uma lista de recursos e também consultar informações somente leitura sobre um recurso.
Para obter um recurso de pergunta:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
Para listar todos os recursos de perguntas:
GET /questions HTTP/1.1
Host: whateverblahblah.com
POSTAR:
Usado para criar um recurso.
Observe que o seguinte é um erro:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Se a URL ainda não foi criada, você não deve usar POST para criá-la ao especificar o nome. Isso deve resultar em um erro de recurso não encontrado porque ainda não existe. Você deve colocar o recurso no servidor primeiro. Você pode argumentar que, ao criar uma nova pergunta, você também está atualizando o recurso / questions, pois agora ele retornaria mais uma pergunta em sua lista de perguntas.
Você deve fazer algo assim para criar um recurso usando POST:
POST /questions HTTP/1.1
Host: whateverblahblah.com
Observe que, neste caso, o nome do recurso não é especificado, o novo caminho da URL do objeto será retornado para você.
EXCLUIR:
Usado para excluir o recurso.
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
COLOCAR:
Usado para criar um recurso, ou sobrescrevê-lo, enquanto você especifica a URL dos recursos.
Para um novo recurso:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Para substituir um recurso existente:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
... Sim, eles são os mesmos. PUT é freqüentemente descrito como o método de 'edição', pois ao substituir o recurso inteiro por uma versão ligeiramente alterada, você editou o que os clientes OBTERÃO na próxima vez.
Usando REST em formulários HTML:
A especificação HTML5 define GET e POST para o elemento de formulário .
O atributo method content é um atributo enumerado com as seguintes palavras-chave e estados:
- A palavra-chave GET, mapeando para o estado GET, indicando o método HTTP GET.
- A palavra-chave POST, mapeando para o estado POST, indicando o método HTTP POST.
Tecnicamente, a especificação HTTP não o limita apenas a esses métodos. Você está tecnicamente livre para adicionar quaisquer métodos que desejar; na prática, porém, isso não é uma boa ideia. A ideia é que todos saibam que você usa GET para ler os dados, então isso vai confundir as coisas se você decidir usar READ. Dito isto...
FRAGMENTO:
Este é um método que foi definido em uma RFC formal. Ele foi projetado para ser usado quando você deseja enviar apenas uma modificação parcial de um recurso, ele seria usado de forma semelhante a PUT:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
A diferença é que PUT deve enviar todo o recurso, não importa quão grande seja comparado ao que foi realmente alterado, enquanto PATCH você pode enviar apenas as alterações.