Framework Web Python https://falconframework.org/
J'ai dû créer un serveur API simple en Python au travail, j'ai donc choisi Falcon, qui est rapide et n'a pas de fonctionnalités supplémentaires.
Install
Prémisse que Python et PyPy sont installés
pip install falcon
Facile. Actuellement (2016/12) v1.1
Est-ce un peu différent lorsque vous le mettez dans votre Mac? Les détails sont officiels. https://falcon.readthedocs.io/en/stable/user/install.html
Voici un exemple d'API qui renvoie json lorsque vous accédez à / hoge / {id} avec get
# api.py
import falcon
import json
class HogeResource(object):
def on_get(self, req, resp, id):
"""Handles GET requests"""
resp.status = falcon.HTTP_200
resp.body = json.dumps({
"result": true,
"message": "success!",
})
api = falcon.API()
hoge = HogeResource()
api.add_route('/hoge/{id}', hoge)
Tout ce que vous avez à faire est de passer une instance de la classe qui définit url et on_get (ou on_post, on_put, etc.) à l'instance de falcon.API () avec add_route. Facile!
Vous pouvez également valider en utilisant @ falcon.before
def validate(req, resp, resource, params):
try:
params['id'] = int(params['id'])
except ValueError:
raise falcon.HTTPBadRequest('Invalid ID',
'ID was not valid.')
class HogeResource(object):
@falcon.before(validate)
def on_get(self, req, resp, id):
#..Abréviation..
Cette fois, nous utiliserons gunicorn comme serveur WSGI
Quand j'ai écrit le code ci-dessus avec le nom de fichier api.py
pip install gunicorn
gunicorn api:main
curl localhost:8000/hoge/12345
Les tests sont également pris en charge, je l'ai donc écrit http://falcon.readthedocs.io/en/stable/api/testing.html
#api_test.py
import falcon
import falcon.testing as testing
from api import api
class TestHogeResource(testing.TestCase):
def setUp(self):
super(testing.TestCase, self).setUp()
self.api = api
def test_hoge(self):
result = self.simulate_get("/hoge/12345")
self.assertEqual(result.status, falcon.HTTP_200)
def test_hoge_error(self):
result = self.simulate_get("/hoge/moge")
self.assertEqual(result.status, falcon.HTTP_400)
Installer et utiliser des outils de test
pip install testtools
python -m testtools.run api_test.py
> Ran 2 tests in 0.001s
> OK
Recommended Posts