[PYTHON] Créez un serveur Web API à une vitesse explosive en utilisant HUG

introduction

hug est un framework d'application Web dédié à la création de serveurs d'API Web. Alors que d'autres frameworks regorgent de fonctionnalités riches telles que le moteur de modèle et le mappeur OR, hug est un framework qui se spécialise uniquement dans les fonctionnalités requises pour le serveur API Web.

hug Official Site

On notera en particulier sa simplicité et sa rapidité. Voici les benchmarks publiés sur la page officielle (benchmarks Pycnic). スクリーンショット 2016-08-02 11.33.56.png C'est un peu moins rapide que Falcon, mais c'est toujours très rapide et beaucoup plus facile à implémenter que Falcon.

Installons-le et touchons-le.

Installation

hug est uniquement compatible avec la série Python 3. L'installation se fait ci-dessous.

pip install hug

Premier câlin

Créons maintenant une API. C'est très simple à mettre en œuvre. Voici un exemple de serveur qui renvoie une réponse simple.

hello_hug.py


import hug


@hug.get('/hello')
def hello(name):
    """Says Hello to a user"""
    return "Hello {}!".format(name)

La partie @ hug.get () est le décorateur de la méthode HTTP. En plus de get, il y a des publications et des mises à jour.

Lançons-le. Vous pouvez le faire ci-dessous. Une fois exécuté, le serveur démarrera sur le port 8000, et une fois accédé, une réponse sera renvoyée.

hug -f hello_hug.py

Essayez d'accéder à [http: // localhost: 8000 / hello? Name = hug](http: // localhost: 8000 / hello? Name = hug) avec votre navigateur. Vous devriez voir la réponse.

Vous pouvez également voir un document simple en accédant à [http: // localhost: 8000 / documentation](http: // localhost: 8000 / documentation).

{
    "404": "The API call you tried to make was not defined. Here's a definition of the API to help you get going :)",
    "documentation": {
        "handlers": {
            "/hello": {
                "GET": {
                    "usage": "Says Hello to a user",
                    "outputs": {
                        "format": "JSON (Javascript Serialized Object Notation)",
                        "content_type": "application/json"
                    },
                    "inputs": {
                        "name": {
                            "type": "Basic text / string value"
                        }
                    }
                }
            }
        }
    }
}

Gestion des versions

La gestion des versions d'API est également facile avec hug. La mise en œuvre du contrôle de version est également très simple. Jetez un œil au code ci-dessous.

versioning_example.py


# filename: versioning_example.py
"""A simple example of a hug API call with versioning"""
import hug

@hug.get('/echo', versions=1)
def echo(text):
    return text


@hug.get('/echo', versions=range(2, 5))
def echo(text):
    return "Echo: {text}".format(**locals())

Pour effectuer le contrôle de version, spécifiez simplement un nombre ou une plage de versions.

Courez ci-dessous.

hug -f versioning_example.py

[http: // localhost: 8000 / v1 / echo? Text = Hi](http: // localhost: 8000 / v1 / echo? Text = Hi) et [http: // localhost: 8000 / v2 / echo? Text = Accédez à Hi](http: // localhost: 8000 / v2 / echo? Text = Hi) et comparez les différences. Vous pouvez voir qu'il est facile de faire une version.

Résumé

En plus du contrôle de version mentionné ci-dessus, il existe d'autres fonctions utiles pour créer des API. Je suis particulièrement heureux que le traitement asynchrone puisse être effectué facilement.

Je pense qu'il convient aux situations suivantes.

J'espère que vous allez l'essayer et découvrir sa rapidité et sa facilité d'utilisation.

Recommended Posts

Créez un serveur Web API à une vitesse explosive en utilisant HUG
Créez un serveur API Web ultra-rapide avec Falcon
Apprendre un réseau neuronal à l'aide de Chainer
Créez facilement un serveur DNS en utilisant Twisted
Configurons un serveur WEB avec Chromebook
[Mac] Créez un environnement Python 3.x à la vitesse la plus rapide à l'aide de Docker
Vitesse explosive avec Python (bouteille)! Développement d'API Web
Préparer un pseudo serveur API à l'aide d'actions GitHub
[Partie 2] Construisons un serveur Web avec EC2 Linux
Implémentez l'API à une vitesse explosive en utilisant Django REST Framework
Créer un pseudo serveur d'API REST à l'aide de pages GitHub
Le débutant de la CTF a tenté de créer un serveur problématique (Web) [Problème]
Essayez de résoudre le Sudoku à une vitesse explosive en utilisant Numpy
Créer un environnement de développement d'API rapide léger à l'aide de Docker
Construire un modèle seq2seq en utilisant la création et l'apprentissage du modèle d'API fonctionnelle de Keras
Créez facilement un environnement GCP pour Kaggle à grande vitesse
Vitesse explosive! Utilisation de Python Simple HTTP Server pour le développement Kintone
Essayez l'analyse de corrélation multivariée à l'aide du lasso graphique à une vitesse explosive
Optimisation d'image côté serveur à l'aide de l'API Web de TinyPNG
Créez un environnement de développement Flask à faible coût avec Docker
J'ai essayé de créer un service qui vend des données apprises par machine à une vitesse explosive avec Docker
Transformez votre téléphone intelligent Android en serveur Web à l'aide de python.
Créez un robot de notification de pluie pour Hangouts Chat à une vitesse explosive
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python (2) ~ Server ~
Contre-mesures contre le proxy lors de l'utilisation de l'API WEB
Créer une application Web avec Flask ②
Créer un environnement go à l'aide de Docker
Créer une application Web avec Django
Créer une application Web avec Flask ①
Créez une API en utilisant hug avec mod_wsgi
Créer une application Web avec Flask ③
Créer une API CRUD à l'aide de l'API rapide
Créer une application Web avec Flask ④
Configurez un serveur Web local en 30 secondes en utilisant http.server en python 3
Démarrez un serveur Web en utilisant Bottle et Flask (j'ai également essayé d'utiliser Apache)
Créer un serveur proxy avec nginx sur plusieurs serveurs distants à l'aide d'Ansible
Construire un serveur de cache Pypi sur QNAP
Construisez un serveur WebDAV simple sur Linux
Créez un environnement d'API rapide avec docker-compose
Configurer un serveur de messagerie avec Twisted
[TPU] [Transformers] Faites du BERT à une vitesse explosive
Construire un serveur Samba sur Arch Linux
J'ai créé une API Web
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
Les prévisions épidémiques du nouveau virus corona ont été publiées sur le Web à une vitesse explosive
Source compilez Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web ―― 1. Introduction à Apache
Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --2 introduction PHP