Lors du développement d'une certaine application Web, il est devenu nécessaire d'appeler l'API Web d'un autre serveur. C'est un mémo qu'une simple API Web a été construite à une vitesse explosive car un pseudo environnement est requis au moment du développement.
Langue Python 3.7.5 Raison: il y avait un programme d'installation Windows exe
Cadre Web ** Django **: grande échelle, riche en fonctionnalités ** Flacon **: petite et moyenne taille, fonctionnalités décentes, conforme WSGI ** Bouteille **: petite taille, légère, conforme WSGI À partir des caractéristiques ci-dessus, nous avons adopté Bottle, qui semble avoir une impression de vitesse cette fois.
Serveur Windows Server Apache 2.4.37 VC15
Téléchargez le programme d'installation à partir du site suivant et démarrez le programme d'installation https://www.python.jp/install/windows/install_py3.html
Vérifiez les options au moment de l'installation, telles que "Installer pour tous les utilisateurs" et "Ajouter un chemin aux variables d'environnement". (Si vous ne le cochez pas, il sera installé dans le dossier de l'utilisateur de connexion du système d'exploitation et vous devrez définir vous-même les variables d'environnement.)
Lorsque le programme d'installation est terminé, à l'invite de commande
python --version
L'installation est terminée lorsque la version sort.
Ensuite, exécutez les commandes suivantes à l'invite de commande (exécutez avec les privilèges d'administrateur).
Installer la bouteille
pip install bottle
DB a utilisé PostgreSQL. Utilisez pycopg2 pour la connexion DB.
pip install psycopg2
Assurez-vous que cela fonctionne. Créez index.py et modifiez-le comme suit.
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)
C'est ça ... n'est-ce pas?
Exécuter python index.py
à l'invite de commande le lancera sur localhost.
Et lorsque vous accédez à http: // localhost: 8080 / hello / tsumasakky avec votre navigateur
Bonjour tsumasakky! S'affiche à l'écran et c'est réussi.
https://www.apachelounge.com/download/VC15/ Téléchargez à partir d'ici.
Copiez le "Apache24" décompressé directement sous C sur le serveur
Téléchargez le fichier sur le site suivant https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
Bien que ce soit un nom de fichier
Apache 2.4 VC "15" Python"37" Windows "64"bit
Donc, "mod_wsgi-4.6.8 + ap24vc15-cp37-cp37m-win_amd64.whl" J'ai téléchargé. Veuillez télécharger en fonction de votre environnement.
Installez à l'invite de commande. (Spécifiez l'emplacement du fichier téléchargé)
pip insatll mod_wsgi-4.6.8+ap24vc15-cp37-cp37m-win_amd64.whl
Tout d'abord, exécutez la commande suivante à l'invite de commande pour obtenir les paramètres mod_wsgi.
mod_wsgi-express module-config
Ensuite, il s'affichera comme suit.
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"
Copiez les paramètres affichés et ajoutez-les au httpd.conf d'Apache. (Vers la fin du module de charge) De plus, ajoutez le routage à l'adaptateur à créer ultérieurement.
httpd.conf
WSGIScriptAlias /api C:\Apache24\htdocs\adapter.wsgi
Créez un fichier adapter.wsgi dans le chemin défini dans WSGIScriptAlias pour voir si les paramètres wsgi fonctionnent.
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!
→ Doit être une chaîne d'octets
https://stackoverflow.com/questions/34838443/typeerror-sequence-of-byte-string-values-expected-value-of-type-str-foundRedémarrez Apache et accédez à http: // localhost / api. Si "Hello World" sort, c'est un succès!
Modifiez ʻindex.py et ʻadapter.wsgi
.
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)
Lorsque j'ai redémarré Apache et accédé à http: // localhost / api / users, j'ai pu obtenir la liste des utilisateurs de la base de données.
Bien que la construction du serveur ait pris un certain temps, le codage de l'application a été terminé en environ 10 minutes! C'est super explosif!
À propos, après cela, pycopg2 acquiert des données de type dictionnaire à partir de DB, les convertit en dict-> json et les renvoie ~ J'ai construit une API avec une telle réponse.
Vous ne pouvez pas le faire de la manière ci-dessus, ou vous pouvez le faire! Veuillez commenter si vous le souhaitez!
Jusqu'à la fin Merci d'avoir lu. (m´ ・ ω ・ `) m
Recommended Posts