Vitesse explosive avec Python (bouteille)! Développement d'API Web

Aperçu

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.

environnement

Installation de Python

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.

Installation des packages requis

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

Bonjour le monde

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.

Construction de serveur Web

Installer Apache

https://www.apachelounge.com/download/VC15/ Téléchargez à partir d'ici.

Copiez le "Apache24" décompressé directement sous C sur le serveur

Configuration WSGI

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

Modification de httpd.conf

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éer un adaptateur

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]

Redémarrez Apache et accédez à http: // localhost / api. Si "Hello World" sort, c'est un succès!

Lancez votre propre application via un adaptateur

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.

Impressions

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

référence

Recommended Posts

Vitesse explosive avec Python (bouteille)! Développement d'API Web
API Web avec Python + Falcon
La requête [Développement Web avec Python] est également redirigée
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
[Développement Web avec Python] Précautions lors de l'enregistrement des cookies
Calculer le noyau gaussien à une vitesse explosive même avec python
Utiliser l'API Trello avec python
Web scraping avec python + JupyterLab
Authentification BASIC avec bouteille Python
API Web EXE par Python
Utiliser l'API Twitter avec Python
Développement d'applications Web avec Flask
Appelez l'API avec python3.
Application Web avec Python + Flask ② ③
Utiliser l'API subsonique avec python3
Web scraping débutant avec python
Rationalisez la recherche Web avec Python
Application Web avec Python + Flask ④
Créez un serveur Web API à une vitesse explosive en utilisant HUG
[IPdb] Les débutants en développement Web ont tenté de résumer le débogage avec Python
Vitesse explosive! Utilisation de Python Simple HTTP Server pour le développement Kintone
Créez un serveur API Web ultra-rapide avec Falcon
Application Web avec Python3.3.1 + Bottle (1) - Changer le moteur de modèle en jinja2
Créer Awaitable avec l'API Python / C
Obtenez des avis avec l'API googlemap de python
Téléchargement de fichiers implémenté avec Python + Bottle
Exécutez Rotrics DexArm avec l'API Python
Premiers pas avec les applications Web Python
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Surveillez les applications Web Python avec Prometheus
Quine Post avec l'API Qiita (Python)
Obtenez une capture d'écran Web avec python
Accédez à l'API Etherpad-lite avec Python
Développement de jeux Othello avec Python
Accédez à l'API Web en Python
Accélérez grossièrement Python avec numba
Configurer un environnement de développement Python avec Atom
Développement d'applications avec Docker + Python + Flask
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
[Développement Web avec Python] Mesures contre les caractères déformés lors de la sortie html
Collecter des informations sur Twitter avec Python (API Twitter)
[Python] Application Web à partir de 0! Pratique (3) - Mise en œuvre de l'API
Créez automatiquement la documentation de l'API Python avec Sphinx
Grattage WEB avec Python (pour mémo personnel)
[Environnement de développement] Python avec Xcode [Avec transition d'écran]
Client API Slack simple réalisé avec Python
Obtenez des données alimentaires avec l'API Amazon (Python)
Python: lecture de données JSON à partir de l'API Web
Premiers pas avec Python Web Scraping Practice
Démonisez une application Web Python avec Supervisor
Développement et déploiement de l'API REST en Python à l'aide de Falcon Web Framework
[Note personnelle] Scraping de pages Web en python3
Télécharger des fichiers sur le Web avec Python