Commit 25c925b4 authored by DANIEL DIAZ SANCHEZ's avatar DANIEL DIAZ SANCHEZ
Browse files

Update README.md

parent bd81e140
......@@ -6,7 +6,7 @@
* Python 3 que debería estar instalado en las máquinas del laboratorio
* Por problemas de direccionamiento y presencia de un NAT en Eduroam *se recomienda usar las máquinas de laboratorio en lugar del portatil personal*
## Condigurar el entorno
## Configurar el entorno
En primer lugar, debes descargar el SDK en `/tmp` como se indica en los requisitos. Lo usaremos más adelante.
......@@ -51,6 +51,82 @@ Ahora el prompt cambiará a: `(myenv) labgcd@vit131:~/cdist$` dónde `(myenv)` i
(myenv) labgcd@vit131:~/cdist$ pip3 install flask
(myenv) labgcd@vit131:~/cdist$ pip3 install flask_sqlalchemy
(myenv) labgcd@vit131:~/cdist$ pip3 install pymysql
```
5. Abre tu editor favorito (`Atom` puede estar bien):
```
(myenv) labgcd@vit131:~/cdist$ atom . &
```
## Crear un servicio REST básico
Vamos a ver el código de un servicio REST que dará un `Hello World` en la ruta `http://host/`, permitirá distinguir entre `POST` y `GET` para peticiones a `http://host/persona`, y nos mostrará como devolver datos estructurados tipo JSON al llamar a `http://host/estructurada`.
El código del servidor es:
```python
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/persona", methods=['POST', 'GET'])
def handle_person():
if request.method == 'POST':
return "Peticion POST a /persona"
else:
return "Peticion GET a /persona"
@app.route("/estructurada", methods=['GET'])
def handle_estructurada():
libro = {
"titulo" : "TCP",
"autor" : "Vinton Cerf"
}
return jsonify(libro), 200
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
```
Analizamos el código (aunque habla por si sólo):
1. Importar paquetes y crear la aplicación.
```python
from flask import Flask, request
app = Flask(__name__)
```
2. Responder a `http://host/` con `Hello World` en formato texto. Para lo que se usa un decorador (que empieza por `@` y que, en este caso, lo proporciona Flask) indicando la ruta en la que debe responder esta función `hello()` y que devuelve el texto `Hello World`
```python
@app.route("/")
def hello():
return "Hello World!"
```
3. Responder a la ruta `http://host/persona` con un texto diferente dependiendo de si la petición se realiza con `GET` o `POST`. Para ello, en el decorador se indican los verbos HTTP soportados (si no se indica nada se asume `GET` como en el caso anterior). A través de `request` que está importado del paquete `flask` se inyecta en el código la información de la petición HTTP que llega, y de esa manera, se puede distinguir entre `GET` o `POST`.
```python
@app.route("/persona", methods=['POST', 'GET'])
def handle_person():
if request.method == 'POST':
return "Peticion POST a /persona"
else:
return "Peticion GET a /persona"
```
4. Responder a la ruta `http://host/estructurada` con un objeto JSON. En este caso, creamos un diccionario en python llamado `libro` con los campos de `titulo` y `autor`. Hacemos uso de `jsonify` para generar el objeto Json a partir de libro. Observa, cómo al devolver algo, puede indicarse el código HTTP de respuesta (en este caso con `,200`) sabiendo que, si no se incluye, se tratará de `200` siempre que no haya un error. Otro aspecto a destacar es que Flask detecta que el resultado a devolver es JSON y cambiará la cabecera `Content-Type` de HTTP a `application/json` automáticamente.
```python
@app.route("/estructurada", methods=['GET'])
def handle_estructurada():
libro = {
"titulo" : "TCP",
"autor" : "Vinton Cerf"
}
return jsonify(libro), 200
```
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment