[PYTHON] Une bibliothèque "apywrapper" qui développe facilement un wrapper pour l'API RESTful

TL;DR

Je pense qu'il y a beaucoup de choses à prendre en compte lors de la création d'un wrapper d'API, comme le traitement des demandes et la sérialisation des données de réponse, mais lorsque vous voulez vraiment des données, y penser et vous en soucier peut être une perte de temps.

_ Lorsque je lance un paramètre au serveur, un objet est renvoyé dans la réponse _

En fait, c'est tout ce que je veux faire.

Je vais introduire le code qui le réalise avec ʻapywrapper`

Exemple

from dataclasses import dataclass
from apywrapper import Apy

api = Apy(host="https://example.com/api", headers={"api_token": "xxxxxx"})


@dataclass
class User:
    user_id: str
    name: str
    age: int


@api.get("/users/{user_id}")
def get_user(user_id: str):
    return User, {"user_id": user_id}

C'est tout! Si vous appelez get_user (" sh1ma "), vous obtiendrez un objet utilisateur avec ʻuser_id`` sh1ma`!

Commentaire

from dataclasses import dataclass
from apywrapper import Apy

Cette ligne importe le corps ʻApy de data class et ʻapywrapper

api = Apy(host="https://example.com/api", headers={"api_token": "xxxxxx"})

Spécifiez l'hôte de l'API ici. headers est facultatif, mais dans la plupart des cas, vous en aurez besoin. (jeton etc.)

@dataclass
class User:
    user_id: str
    name: str
    age: int

Définit la classe d'objets requis en tant que classe de données. Ceci est utilisé pour sérialiser la réponse.

@api.get("/users/{user_id}")
def get_user(user_id: str):
    return User, {"user_id": user_id}

La partie @ api.get (" / users / {user_id} ") est très importante. Ici, spécifiez le chemin de l'API. Vous pouvez passer une variable à Path en la mettant entre crochets ondulés comme {user_id}.

def get_user (user_id: str): définit une fonction. Il n'y a rien de spécial à ce sujet. Le nom de l'argument dans la partie ʻuser_id` n'est pas réellement utilisé, alors n'hésitez pas à utiliser le nom de votre choix!

return User, {" user_id ": user_id} est très, très important! Tout est emballé ici! Parmi les valeurs à return, la première partie de ʻUser passera l'objet à répondre (même si une liste ( List [User] ) doit être renvoyée, spécifiez une seule, c'est-à-dire ʻUser. Masu). La partie suivante {" user_id ": user_id} est le paramètre de requête. ʻUser_id` est une variable Path, mais les autres requêtes et données json sont spécifiées de la même manière.

C'est difficile à comprendre, alors voici un exemple.

Données POST

@api.post("/users")
def create_user(username: str, user_id: str):
    return User, {"user_name": username, "user_id": user_id}

Les données pour POST sont JSON, mais vous pouvez spécifier des paramètres de la même manière que pour GET.

Obtenir des données (avec requête)

@api.get("/users/{user_id}")
def get_user(user_id: str, only_name: bool):
    return User, {"user_id": user_id, "only_name": True}

Vous pouvez également spécifier des requêtes et des variables de chemin.

Comment installer

pip install apywrapper

finalement

――Il est toujours en cours de développement.

Recommended Posts

Une bibliothèque "apywrapper" qui développe facilement un wrapper pour l'API RESTful
J'ai créé une bibliothèque de wrapper Python pour l'API de reconnaissance d'images docomo.
Création d'un wrapper Python pour l'API Qiita
kabu Station® API-I a créé un wrapper Python pour l'API REST
Emballage Python de l'API Qiita pour le traitement par lots pour récupérer les publications Qiita
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
Création d'une bibliothèque pour python capable de gérer facilement la division morphologique
Un guide pour faire de l'IoT avec MicroPython facilement jusqu'à la dernière minute
Pour que les utilisateurs de Pandas puissent pratiquer SQL facilement
Un outil pour saisir facilement du code Python
J'ai créé une API Web
Implémentation du wrapper Python pour l'API Qiita v2
J'ai fait une bibliothèque pour l'assurance actuarielle
J'ai essayé d'expliquer à quoi sert le générateur Python aussi facilement que possible.
Appuyez sur les exemples v20-python-samples de la bibliothèque d'encapsuleurs d'API REST OANDA v20 pour Python