Bei der Entwicklung einer bestimmten Webanwendung musste die Web-API eines anderen Servers aufgerufen werden. Es ist ein Memo, dass eine einfache Web-API mit explosiver Geschwindigkeit erstellt wurde, da zum Zeitpunkt der Entwicklung eine Pseudoumgebung erforderlich ist.
Sprache Python 3.7.5 Grund: Es gab ein Windows Exe-Installationsprogramm
Web Framework ** Django **: Großformatig, funktionsreich ** Flasche **: Kleine und mittlere Größe, anständige Funktionen, WSGI-konform ** Flasche **: Klein, leicht, WSGI-konform Aufgrund der oben genannten Eigenschaften haben wir Bottle übernommen, das diesmal ein Gefühl von Geschwindigkeit zu haben scheint.
Server Windows Server Apache 2.4.37 VC15
Laden Sie das Installationsprogramm von der folgenden Site herunter und starten Sie das Installationsprogramm https://www.python.jp/install/windows/install_py3.html
Überprüfen Sie die Optionen zum Zeitpunkt der Installation, z. B. "Für alle Benutzer installieren" und "Pfad zu Umgebungsvariablen hinzufügen". (Wenn Sie dies nicht überprüfen, wird es im Ordner des Anmeldebenutzers des Betriebssystems installiert, und Sie müssen die Umgebungsvariablen selbst festlegen.)
Wenn das Installationsprogramm abgeschlossen ist, an der Eingabeaufforderung
python --version
Die Installation ist abgeschlossen, wenn die Version herauskommt.
Führen Sie dann die folgenden Befehle an der Eingabeaufforderung aus (mit Administratorrechten ausführen).
Flasche einbauen
pip install bottle
DB verwendete PostgreSQL. Verwenden Sie pycopg2 für die DB-Verbindung.
pip install psycopg2
Stellen Sie sicher, dass es funktioniert. Erstellen Sie index.py und bearbeiten Sie es wie folgt.
index.py
from bottle import route, run, template
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}} </b>!', name=name)
run(host='localhost', port=8080)
Das ist es ... nicht wahr?
Wenn Sie "python index.py" an der Eingabeaufforderung ausführen, wird es auf localhost gestartet. Und wenn Sie mit Ihrem Browser auf http: // localhost: 8080 / hello / tsumasakky zugreifen Hallo tsumasakky! Wird auf dem Bildschirm angezeigt und ist erfolgreich.
https://www.apachelounge.com/download/VC15/ Hier herunterladen.
Kopieren Sie den entpackten "Apache24" direkt unter C auf den Server
Laden Sie die Datei von der folgenden Site herunter https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
Obwohl es ein Dateiname ist
Apache 2.4 VC "15" Python"37" Windows "64"bit
Also "mod_wsgi-4.6.8 + ap24vc15-cp37-cp37m-win_amd64.whl" Ich habe heruntergeladen. Bitte laden Sie entsprechend Ihrer Umgebung herunter.
Installieren Sie an der Eingabeaufforderung. (Geben Sie den Speicherort der heruntergeladenen Datei an.)
pip insatll mod_wsgi-4.6.8+ap24vc15-cp37-cp37m-win_amd64.whl
Führen Sie zunächst den folgenden Befehl an der Eingabeaufforderung aus, um die Einstellungen für mod_wsgi abzurufen.
mod_wsgi-express module-config
Dann wird es wie folgt angezeigt.
LoadFile "c:/program files/python37/python37.dll"
LoadModule wsgi_module "c:/program files/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/program files/python37"
Kopieren Sie die angezeigten Einstellungen und fügen Sie sie der httpd.conf von Apache hinzu. (Gegen Ende des Lademoduls) Fügen Sie außerdem das Routing zu dem Adapter hinzu, der später erstellt werden soll.
httpd.conf
WSGIScriptAlias /api C:\Apache24\htdocs\adapter.wsgi
Erstellen Sie eine adapter.wsgi-Datei in dem in WSGIScriptAlias festgelegten Pfad, um festzustellen, ob die wsgi-Einstellungen funktionieren.
adapter.wsgi
def application(environ,start_response):
status = '200 OK'
output = b'Hello World!'
response_headers = [('Content-type','text/plain'),
('Content-Length',str(len(output)))]
start_response(status,response_headers)
return [output]
output = 'Hello World!' #Error!
→ Muss eine Bytezeichenfolge sein
https://stackoverflow.com/questions/34838443/typeerror-sequence-of-byte-string-values-expected-value-of-type-str-foundStarten Sie Apache neu und gehen Sie zu http: // localhost / api. Wenn "Hello World" herauskommt, ist es ein Erfolg!
Bearbeiten Sie die index.py
und adapter.wsgi
von früher.
adapter.wsgi
import sys, os
dirpath = os.path.dirname(os.path.abspath(__file__))
sys.path.append(dirpath)
os.chdir(dirpath)
import bottle
import index
application = bottle.default_app()
index.py
from bottle import route, run, template
from bottle import TEMPLATE_PATH
import psycopg2
@route('/hello')
def hello():
return template('<b>Hello World!</b>',)
@route('/users')
def users():
conn = psycopg2.connect("postgresql://postgres:postgres@localhost:5432/sample")
cur = conn.cursor()
cur.execute('select * from sample.users;')
users = cur.fetchall()
cur.close()
conn.close()
return template('<b>{{users}}</b>!', users=users)
if __name__ == '__main__':
run(host='localhost', port=8080, debug=True, reloader=True)
Als ich Apache neu startete und auf http: // localhost / api / users zugreifen konnte, konnte ich die Liste der Benutzer aus der Datenbank abrufen.
Obwohl der Aufbau des Servers einige Zeit in Anspruch nahm, war die eigentliche Anwendungscodierung in etwa 10 Minuten abgeschlossen! Es ist super explosiv!
Übrigens, danach erfasst pycopg2 Daten im Wörterbuchtyp von DB, konvertiert sie in dict-> json und gibt sie ~ zurück Ich habe eine API mit einer solchen Antwort erstellt.
Sie können es nicht so machen, oder Sie können es tun! Bitte kommentieren Sie, wenn Sie möchten!
Bis zum Ende Danke fürs Lesen. (m´ ・ ω ・ `) m
Recommended Posts