TL;DR
Développer une bibliothèque appelée "apywrapper"
L'emballage API peut être développé à une vitesse explosive
Prend en charge l'API RESTful __ uniquement __
https://github.com/sh1ma/apywrapper
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`
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`!
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.
@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.
@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.
pip install apywrapper
――Il est toujours en cours de développement.
Recommended Posts