Premiers pas avec Python responder v2

responder v2.0.0 est sorti le 2019-10-19 (JST)! Cela fait un moment, mais j'ai étudié les changements par rapport à la v1, je vais donc les présenter.

À propos, il semble que la rétrocompatibilité de la v1.3.2 soit sécurisée, il n'y a donc pas de problème même si vous mettez à niveau vers la v2.0.5.

Public cible

Cette fois, nous reprendrons uniquement les modifications du système v1. ** Pour plus de détails, veuillez vous référer à Pour commencer avec Python responder ... Recherche préliminaire --Qiita! ** **

Nouveau routeur et schéma (et modèle)

La notation du schéma et du modèle a changé! De plus, la refactorisation autour du routeur a été effectuée (honnêtement, cela ne concerne pas les utilisateurs).

Jusqu'à présent, une seule importation était nécessaire et l'avantage de pouvoir faire quoi que ce soit avec une seule instance était bon ou mauvais.

import responder

api = responder.API()

Cependant, ʻapi` était également nécessaire pour définir le schéma et le modèle, et la séparation des fichiers était un peu gênante. Dans la nouvelle version 2, ils ont été séparés, ce qui facilite un peu la séparation des fichiers.

Router La refactorisation a été effectuée. Je ne pense pas qu'il y ait eu de changements du côté des utilisateurs jusqu'à présent.

Schema Une nouvelle importation de responder.ext.schema (telle que de responder.ext.schema import Schema as OpenAPISchema) est requise. Cependant, cela dépend toujours de ʻapilors de la génération de l'instance deresponder.ext.schema.Schema`, et cette instance est requise lors de la définition de chaque schéma, il y a donc toujours une astuce pour séparer les fichiers ...

Nouvelle façon d'écrire


import responder
from responder.ext.schema import Schema as OpenAPISchema
from marshmallow import Schema, fields

contact = {
    "name": "API Support",
    "url": "http://www.example.com/support",
    "email": "[email protected]",
}
license = {
    "name": "Apache 2.0",
    "url": "https://www.apache.org/licenses/LICENSE-2.0.html",
}

api = responder.API()

schema = OpenAPISchema(
    app=api,
    title="Web Service",
    version="1.0",
    openapi="3.0.2",
    docs_route='/docs',  #Lors de la fourniture de documents
    description="A simple pet store",
    terms_of_service="http://example.com/terms/",
    contact=contact,
    license=license,
)

@schema.schema("Pet")
class PetSchema(Schema):
    name = fields.Str()

@api.route("/")
def route(req, resp):
    """A cute furry animal endpoint.
    ---
    get:
        description: Get a random pet
        responses:
            200:
                description: A pet to be returned
                content:  
                    application/json: 
                        schema: 
                            $ref: '#/components/schemas/Pet'                         
    """
    resp.media = PetSchema().dump({"name": "little orange"})

De plus, cela semble également fonctionner avec la méthode d'écriture conventionnelle, mais ce n'est pas recommandé, donc la méthode d'écriture existante est omise.

Template En plus de la fonction de modèle existante, elle peut être implémentée comme suit:

Fonction de modèle nouvellement séparée


from responder.templates import Templates

templates = Templates()

@api.route("/hello/{name}/html")
def hello(req, resp, name):
    resp.html = templates.render("hello.html", name=name)

Il prend également en charge le rendu asynchrone render_async:

Rendu asynchrone des modèles


from responder.templates import Templates

templates = Templates(enable_async=True)

resp.html = await templates.render_async("hello.html", name=name)

Les modèles existants sont également disponibles:

Fonction de modèle existante


import responder

api = responder.API()

@api.route("/hello/{name}/html")
def hello_html(req, resp, *, who):
    resp.html = api.template('hello.html', name=name)

Prise en charge de Python 3.8

À partir de la v2.0.5, il prend en charge Python 3.8.

Épilogue

Il peut être plus facile de mettre en œuvre des applications Web de taille moyenne.

référence

Recommended Posts

Premiers pas avec Python responder v2
1.1 Premiers pas avec Python
Premiers pas avec Python
Premiers pas avec Python
Introduction aux fonctions Python
Premiers pas avec Python Django (1)
Premiers pas avec Python Django (4)
Premiers pas avec Python Django (3)
Introduction à Python Django (6)
Premiers pas avec Python Django (5)
Premiers pas avec les applications Web Python
Premiers pas avec Python pour les classes PHPer
Premiers pas avec Python Bases de Python
Premiers pas avec les algorithmes génétiques Python
Premiers pas avec Python 3.8 sous Windows
Premiers pas avec Python pour les fonctions PHPer
Premiers pas avec python3 # 1 Apprenez les connaissances de base
Premiers pas avec Python Web Scraping Practice
Premiers pas avec Python pour PHPer-Super Basics
Premiers pas avec Python Web Scraping Practice
Premiers pas avec Dynamo de Python boto
Django 1.11 a démarré avec Python3.6
Premiers pas avec Android!
Premiers pas avec apache2
Premiers pas avec Django 1
Introduction à l'optimisation
Premiers pas avec Numpy
Premiers pas avec Spark
Premiers pas avec Pydantic
Premiers pas avec Jython
Premiers pas avec Django 2
Démarrer avec Python avec 100 coups sur le traitement du langage
[Français] Premiers pas avec Rust pour les programmeurs Python
Premiers pas avec AWS IoT facilement en Python
Matériel à lire lors de la mise en route de Python
Paramètres pour démarrer avec MongoDB avec python
Traduire Premiers pas avec TensorFlow
Introduction à Tkinter 2: Button
Premiers pas avec Go Assembly
Premiers pas avec PKI avec Golang ―― 4
Commencez avec Python! ~ ② Grammaire ~
Premiers pas avec Django avec PyCharm
Premiers pas avec Google App Engine pour Python et PHP
Commencez avec Python! ~ ① Construction de l'environnement ~
Lien pour commencer avec python
Premiers pas avec python3 # 3 Essayez des calculs avancés à l'aide de l'instruction d'importation
Introduction à Git (1) Stockage d'historique
Premiers pas avec Sphinx. Générer docstring avec Sphinx
Premiers pas avec Sparse Matrix avec scipy.sparse
Premiers pas avec Julia pour Pythonista
Comment démarrer avec Python
Initiation aux mathématiques Démarrage avec la programmation Python Challenge Notes personnelles - Problème 1-1
Premiers pas avec Cisco Spark REST-API
a commencé python
Commençant par USD sur Windows
Démarrez avec Python avec Blender