Enrutamiento: Métodos

Para acceder a las distintas URLs podemos utilizar varios métodos en nuestra petición HTTP. En nuestros ejemplos vamos a trabajar con el método GET y POST, que son los métodos que normalmente podemos utilizar desde un navegador web.

  • GET: Se realiza una petición para obtener un recurso del servidor web. Es el método más utilizado.
  • POST: Aunque con el método GET también podemos mandar información al servidor (por medio de parámetros escritas en la URL), utilizamos el método POST para enviar información a una determinada URL. Normalmente utilizamos los formularios HTML para enviar información al servidor por medio del método POST:

Por defecto las rutas indicadas en la funciones route sólo son accesibles utilizando el método GET. Por ejemplo:

$ curl -X POST http://localhost:5000/articulos/

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>

Si una URL recibe información por medio del método POST y no queremos que se acceda a ella con un método GET, se definirá de la siguiente manera:

@app.route('/articulos/new',methods=["POST"])
def articulos_new():
	return 'Está URL recibe información de un formulario con el método POST'

Y por lo tanto:

curl http://localhost:5000/articulos/new

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>	

curl -X POST http://localhost:5000/articulos/new

Está URL recibe información de un formulario con el método POST       

También en muchas ocasiones es deseable acceder a una URL con los dos métodos, de tal manera que haremos una cosa cuando acedemos con GET y haremos otra cuando se acceda con POST. Ejemplo:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return 'Hemos accedido con POST'
    else:
        return 'Hemos accedido con GET'

Y si accedemos:

curl http://localhost:5000/login
Hemos accedido con GET

curl -X POST http://localhost:5000/login
Hemos accedio con POST

En este ejemplo hemos utilizado el objeto request que estudiaremos en la siguiente unidad.

Código ejemplo de esta unidad

Código