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.
Assumindo que
/questions/10
é uma questão válida, o método é usado para interagir com ela.POST para adicionar a ele
PUT para criar ou substituir
GET para ver / consultar
e DELETE para bem .. delete.
O url não muda.
fonte
Eu vou arriscar e supor que você quer dizer quais são os controladores padrão para MVC quando você diz urls "RESTful", já que seus exemplos podem ser considerados não "RESTful" (consulte este artigo).
Já que Rails realmente popularizou o estilo de URL que você parece estar interessado, eu ofereço abaixo as ações do controlador padrão produzidas pelo ScaffoldingGenerator em Ruby on Rails. Eles devem ser familiares a qualquer pessoa que use um aplicativo Rails.
Normalmente, você construiria isso como:
fonte
Aqui está um mapeamento de seus URLs atuais usando o princípio REST:
Se você identificar a pergunta como um recurso, ela deve ter um URL exclusivo. Usar GET para exibi-lo (recuperá-lo) é a prática comum. Se torna:
Agora você deseja que seu usuário tenha outra visão do mesmo recurso que lhe permita editar o recurso (talvez com controles de formulário).
Duas opções aqui, seu aplicativo é um aplicativo (não um site), então você pode usar JavaScript para transformar o recurso em um recurso editável no lado do cliente.
Se este for um site, você pode usar o mesmo URL com informações adicionais para especificar outra visualização. A prática comum parece ser:
Isso é para mudar a pergunta, então PUT é o método correto a ser usado:
A lista de perguntas é, na verdade, o recurso pai de uma pergunta, então naturalmente é:
Agora você pode precisar de mais alguns:
Tada :)
fonte
Seus quatro exemplos podem ser:
Para adicionar uma pergunta:
O servidor responderia:
fonte