Utilice URL para especificar sus objetos, no sus acciones:
Tenga en cuenta que lo que mencionó por primera vez no es RESTful:
/questions/show/<whatever>
En su lugar, debe usar sus URL para especificar sus objetos:
/questions/<question>
Luego, realiza una de las siguientes operaciones en ese recurso.
OBTENER:
Se utiliza para obtener un recurso, consultar una lista de recursos y también para consultar información de solo lectura sobre un recurso.
Para obtener un recurso de pregunta:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
Para enumerar todos los recursos de preguntas:
GET /questions HTTP/1.1
Host: whateverblahblah.com
ENVIAR:
Se usa para crear un recurso.
Tenga en cuenta que lo siguiente es un error:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Si la URL aún no se ha creado, no debería utilizar POST para crearla mientras especifica el nombre. Esto debería resultar en un error de recurso no encontrado porque aún no existe. Primero debe PONER el recurso en el servidor. Podría argumentar que al crear una nueva pregunta, también está actualizando el recurso / preguntas, ya que ahora devolvería una pregunta más en su lista de preguntas.
Debería hacer algo como esto para crear un recurso usando POST:
POST /questions HTTP/1.1
Host: whateverblahblah.com
Tenga en cuenta que, en este caso, no se especifica el nombre del recurso, se le devolverá la ruta URL de los nuevos objetos.
ELIMINAR:
Se usa para eliminar el recurso.
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
PONER:
Se utiliza para crear un recurso o sobrescribirlo mientras especifica la URL de los recursos.
Para un nuevo recurso:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Para sobrescribir un recurso existente:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
... Sí, son iguales. PUT se describe a menudo como el método de 'editar', ya que al reemplazar todo el recurso con una versión ligeramente alterada, ha editado lo que los clientes OBTENERÁN la próxima vez que lo hagan.
Usando REST en formularios HTML:
La especificación HTML5 define GET y POST para el elemento de formulario .
El atributo de contenido del método es un atributo enumerado con las siguientes palabras clave y estados:
- La palabra clave GET, que se asigna al estado GET, indica el método HTTP GET.
- La palabra clave POST, correlacionada con el estado POST, indica el método HTTP POST.
Técnicamente, la especificación HTTP no lo limita solo a esos métodos. Usted es técnicamente libre de agregar cualquier método que desee, aunque en la práctica esto no es una buena idea. La idea es que todos sepan que usa GET para leer los datos, por lo que confundirá las cosas si decide usar READ. Dicho eso ...
PARCHE:
Este es un método que se definió en un RFC formal. Está diseñado para usarse cuando desea enviar solo una modificación parcial a un recurso, se usaría de manera similar a PUT:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
La diferencia es que PUT tiene que enviar todo el recurso, sin importar qué tan grande sea en comparación con lo que realmente ha cambiado, mientras que PATCH puede enviar solo los cambios.
Suponiendo que
/questions/10
es una pregunta válida, entonces el método se utiliza para interactuar con ella.POST para agregarle
PONER para crearlo o reemplazarlo
OBTENER para verlo / consultarlo
y BORRAR para bien ... eliminarlo.
La URL no cambia.
fuente
Voy a arriesgarme y adivinar que lo que quiere decir es qué son los controladores estándar para MVC cuando dice URL "RESTful", ya que sus ejemplos podrían considerarse no "RESTful" (consulte este artículo).
Dado que Rails realmente popularizó el estilo de URL que parece interesarle, a continuación ofrezco las acciones de controlador predeterminadas producidas por ScaffoldingGenerator en Ruby on Rails. Cualquiera que utilice una aplicación Rails debería resultarle familiar.
Normalmente, construiría esto como:
fuente
Aquí hay un mapeo de sus URL actuales utilizando el principio REST:
Si identifica la pregunta como un recurso, entonces debería tener una URL única. Usar GET para mostrarlo (recuperarlo) es una práctica común. Se vuelve:
Ahora desea que su usuario tenga otra vista del mismo recurso que le permita editar el recurso (tal vez con controles de formulario).
Aquí hay dos opciones, su aplicación es una aplicación (no un sitio web), entonces es mejor que use JavaScript para transformar el recurso en un recurso editable en el lado del cliente.
Si se trata de un sitio web, entonces puede usar la misma URL con información adicional para especificar otra vista, la práctica común parece ser:
Esto es para cambiar la pregunta, por lo que PUT es el método correcto para usar:
La lista de preguntas es en realidad el recurso principal de una pregunta, por lo que naturalmente es:
Ahora puede que necesites más:
Tada :)
fuente
Tus cuatro ejemplos podrían ser:
Para agregar una pregunta:
El servidor respondería:
fuente