Ich denke, Sie verwenden häufig ein Webanwendungsframework, um einen API-Server zu erstellen, aber Sie brauchen nicht etwas so Vielseitiges, nicht wahr? Dieser Falke kann in einem solchen Fall verwendet werden. Falcon Sie benötigen mindestens eine Datei. Fühlen Sie sich frei, um loszulegen.
Verwenden Sie pip
. Einfach.
Wenn es nicht funktioniert, versuchen Sie, "sudo" hinzuzufügen.
$ pip install falcon
Sie benötigen lediglich eine Datei. Sagen wir "sample.py".
Eine Ressource ist eine Klasse, die Anforderungen verarbeitet. Wenn Sie "on_get" oder "on_post" schreiben, wird die Anforderung der entsprechenden Methode verarbeitet.
sample.py
...
class SampleResource:
def on_get(self, req, resp):
obj = {
"header": "Hello!",
"body": {
"a": "hoge",
"b": "fuga",
}
}
resp.body = json.dumps(obj, ensure_ascii=False)
...
Verbinden Sie mit add_route
den Pfad mit der Klasse, die die Anforderung verarbeitet.
sample.py
...
app = falcon.API()
app.add_route('/sample', SampleResource())
...
Bitte ändern Sie die Adresse und den Port entsprechend. Dieser Teil ist bei Verwendung von "Gunicorn" usw. nicht erforderlich.
sample.py
...
if __name__ == "__main__":
from wsgiref import simple_server
httpd = simple_server.make_server("127.0.0.1", 8000, app)
httpd.serve_forever()
...
Es funktioniert normalerweise mit "Python".
$ python sample.py
Wenn ich versuche, darauf zuzugreifen, scheint es zu funktionieren. http://localhost:8000/sample
{"body": {"a": "hoge", "b": "fuga"}, "header": "Hello!"}
Installieren Sie mit pip
.
$ pip install gunicorn
Standardmäßig werden 8000 Ports verwendet.
$ gunicorn sample:app
[2016-12-15 20:37:20 +0900] [34136] [INFO] Starting gunicorn 19.6.0
[2016-12-15 20:37:20 +0900] [34136] [INFO] Listening at: http://127.0.0.1:8000 (34136)
...
Verwenden Sie -b
, um den Port (die Adresse) zu ändern.
$ gunicorn -b 127.0.0.1:8888 sample:app
[2016-12-15 20:41:29 +0900] [34225] [INFO] Starting gunicorn 19.6.0
[2016-12-15 20:41:29 +0900] [34225] [INFO] Listening at: http://127.0.0.1:8888 (34225)
...
Es steht in der req
im Argument wie on_get
.
sample.py
class ParamsResource:
def on_get(self, req, resp):
params = req.params
resp.body = json.dumps(params, ensure_ascii=False)
app = falcon.API()
app.add_route('/params', ParamsResource())
/params
=> {}
/params?a=hoge&b=fuga
=> {"a": "hoge", "b": "fuga"}
Ich hab es geschafft. Es ist eine gute Idee, die Anfrage und Antwort hier zu lesen. req/resp
Der Standard enthält keine spezifischen Mittel. Ich werde es selbst vorbereiten.
Ich verwende MySQL in meiner Umgebung, daher werde ich versuchen, darauf zuzugreifen.
Installieren Sie zuerst "MySQL-Python". Vorstellung des bekannten pip
.
$ pip install MySQL-Python
Und schreibe. Bitte ändern Sie die DB-Informationen entsprechend.
sample.py
...
class BusinnesTermResource:
def on_get(self, req, resp):
connection = MySQLdb.connect(
host='localhost',
port=3306,
user='root',
passwd='password',
db='sample',
charset='utf8',
cursorclass=MySQLdb.cursors.DictCursor
)
cursor = connection.cursor()
sql = "select * from business_term"
cursor.execute(sql)
term = cursor.fetchone()
cursor.close()
connection.close()
resp.body = json.dumps(term, ensure_ascii=False)
app = falcon.API()
app.add_route('/businnes_term', BusinnesTermResource())
...
Ich hab es geschafft.
{"term": "Hoge", "meening": "Fuga", "example": "Stichprobe", "id": 1}
sample.py
# -*- coding: utf-8 -*-
# sample.py
import falcon
import json
import MySQLdb
from MySQLdb.cursors import DictCursor
class BusinnesTermResource:
def on_get(self, req, resp):
connection = MySQLdb.connect(
host='localhost',
port=3306,
user='root',
passwd='password',
db='sample',
charset='utf8',
cursorclass=MySQLdb.cursors.DictCursor
)
cursor = connection.cursor()
sql = "select * from business_term"
cursor.execute(sql)
term = cursor.fetchone()
cursor.close()
connection.close()
resp.body = json.dumps(term, ensure_ascii=False)
class SampleResource:
def on_get(self, req, resp):
obj = {
"header": "Hello!",
"body": {
"a": "hoge",
"b": "fuga",
}
}
resp.body = json.dumps(obj, ensure_ascii=False)
class ParamsResource:
def on_get(self, req, resp):
params = req.params
resp.body = json.dumps(params, ensure_ascii=False)
app = falcon.API()
app.add_route('/businnes_term', BusinnesTermResource())
app.add_route('/sample', SampleResource())
app.add_route('/params', ParamsResource())
if __name__ == "__main__":
from wsgiref import simple_server
httpd = simple_server.make_server("127.0.0.1", 8000, app)
httpd.serve_forever()
Es war sehr einfach zu machen und es fühlte sich gut an. Es ist schnell zu schreiben und zu beginnen, also ist es schnell. Ich möchte es einmal zum Testen oder mit einer geeigneten und guten Anwendung verwenden, die nicht so viele Benutzer hat.
Recommended Posts