Servicios web REST en Python

@jjmerelo

git.io/pytests

Por qué REST

PUT, GET, POST y DELETE

Diseñando un API REST

Publicando una clase

def uno(self,hito_id):
        if hito_id > len(self.hitos['hitos']) or hito_id < 0:
            raise IndexError("Índice fuera de rango")
        return self.hitos['hitos'][hito_id]

Usemos Hug

logo
"""Hitos de IV servidos para usted"""

import hug

from HitosIV import HitosIV


estos_hitos = HitosIV()

@hug.get('/all')
def all():
    """Devuelve todos los hitos"""
    return { "hitos": estos_hitos.todos_hitos() }
	
import hug
import hugitos

def test_should_have_correct_API():
    data = hug.test.get(hugitos, '/all')
    assert data.status == "200 OK"
    assert data.data['hitos']['hitos'][0]['file'] == "0.Repositorio"
	  
@hug.get('/one/{id}')
def one( id: int ):
    """Devuelve un hito"""
    return { "hito": estos_hitos.uno( id ) }
>

Si no se prueba...

def test_should_return_at_least_one_element():
    data = hug.test.get(hugitos, '/one/0')
    assert data.status == "200 OK"
    assert data.data['hito']['file'] == "0.Repositorio"
	    

Ejecutando

Sirviendo

sirviendo todos Sirviendo uno

Publicando en la web

Heroku, OpenShift

REST frameworks FTW

Usa siempre tests

Diseña con cuidado

Créditos