Python-Webframework https://falconframework.org/
Ich musste bei der Arbeit einen einfachen API-Server in Python erstellen, also entschied ich mich für Falcon, das schnell ist und keine zusätzlichen Funktionen bietet.
Install
Voraussetzung ist, dass Python und PyPy installiert sind
pip install falcon
Einfach. Derzeit (2016/12) v1.1
Ist es ein bisschen anders, wenn Sie es in Ihren Mac stecken? Details sind offiziell. https://falcon.readthedocs.io/en/stable/user/install.html
Unten finden Sie eine Beispiel-API, die json zurückgibt, wenn Sie mit get auf / hoge / {id} zugreifen
# 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)
Sie müssen lediglich eine Instanz der Klasse, die url und on_get (oder on_post, on_put usw.) definiert, mit add_route an die Instanz von falcon.API () übergeben. Einfach!
Sie können auch mit @ falcon.before validieren
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):
#..Abkürzung..
Dieses Mal werden wir Gunicorn als WSGI-Server verwenden
Als ich den obigen Code mit dem Dateinamen api.py schrieb
pip install gunicorn
gunicorn api:main
curl localhost:8000/hoge/12345
Tests werden auch unterstützt, also habe ich es geschrieben 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)
Installieren und verwenden Sie Testtools
pip install testtools
python -m testtools.run api_test.py
> Ran 2 tests in 0.001s
> OK
Recommended Posts