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
fromflaskimportFlask,request
app=Flask(__name__)
@app.route("/")
defhello():
return"Hello World!"
@app.route("/persona",methods=['POST','GET'])
defhandle_person():
ifrequest.method=='POST':
return"Peticion POST a /persona"
else:
return"Peticion GET a /persona"
@app.route("/estructurada",methods=['GET'])
defhandle_estructurada():
libro={
"titulo":"TCP",
"autor":"Vinton Cerf"
}
returnjsonify(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
fromflaskimportFlask,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("/")
defhello():
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'])
defhandle_person():
ifrequest.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.