Création du wrapper d'API Qiita Python "qiipy"

TL;DR

J'ai fait qiipy

Pourquoi avez-vous réussi?

L'autre jour, j'ai créé ma propre bibliothèque appelée apywrapper qui peut facilement développer un wrapper d'API, j'ai donc voulu tester sa puissance.

Environnement de développement

Dépendance

Quel genre de code avez-vous écrit

Le code que j'ai écrit est ~~~~

Tout d'abord, définissez le modèle comme ceci ...

from typing import Optional
from dataclasses import dataclass


@dataclass
class User:
    id: str
    permanent_id: int
    name: str
    profile_image_url: str
    team_only: bool
    followees_count: int
    followers_count: int
    items_count: int
    description: Optional[str] = None
    organization: Optional[str] = None
    location: Optional[str] = None
    facebook_id: Optional[str] = None
    github_login_name: Optional[str] = None
    linkedin_id: Optional[str] = None
    twitter_screen_name: Optional[str] = None
    website_url: Optional[str] = None


@dataclass
class Comment:
    body: str
    created_at: str
    id: str
    rendered_body: str
    updated_at: str
    user: User

Après cela, cela ressemble à la définition d'une API (vous n'avez pas à vous soucier des paramètres tels que les requêtes, les variables de chemin, json, etc.)

from apywrapper import Apy, get, post, delete, patch
from ._models import Comment


class Qiipy(Apy):
    def __init__(self, access_token: str, host: str = "https://qiita.com/api/v2"):
        super().__init__(host=host, headers={"Authorization": f"Bearer {access_token}"})

    @get("/comments/{comment_id}")
    def get_comment(self, comment_id: str):
        """Obtenez des commentaires

        Args:
            comment_id:Identifiant du commentaire
        Returns:
            Comment
        """
        return Comment, {"comment_id": comment_id}

    @delete("/comments/{comment_id}")
    def delete_comment(self, comment_id: str):
        """Supprimer le commentaire

        Args:
            comment_id:Identifiant du commentaire
        Returns:
            None
        """
        return None, {"comment_id": comment_id}
   ...

c'est tout! w

Si vous expliquez le code pour le moment

@method("/path/to/api") #chemin de l'API
def get_something(self, item_id: str):
  	return Something, {"item_id": item_id} 
  	#dans ce cas`item_id`Devient une requête(Parce qu'il n'y a pas de variables dans le chemin)
    #La valeur de retour est`Something`objet

Comment utiliser

from qiipy import Qiipy
qiita = Qiipy(access_token="xxx")
qiita.get_comment("zzzzzzzzz") #L'objet de commentaire est retourné

Se sentir comme

Je veux que tu coopères

--Définition de l'entité (modèle) (https://github.com/sh1ma/qiipy/blob/master/qiipy/_models.py)

J'ai hâte de travailler avec vous.

Recommended Posts

Création du wrapper d'API Qiita Python "qiipy"
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
J'ai fait un texte Python
J'ai fait un Line-bot avec Python!
J'ai fait une loterie avec Python.
J'ai créé un démon avec Python
kabu Station® API-I a créé un wrapper Python pour l'API REST
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python
J'ai fait un programme de gestion de la paie en Python!
J'ai fait un compteur de caractères avec Python
J'ai fait une carte hexadécimale avec Python
Après avoir étudié Python3, j'ai créé un Slackbot
J'ai fait un jeu rogue-like avec Python
J'ai créé un fichier de configuration avec Python
J'ai créé un bot Twitter avec Go x Qiita API x Lambda
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python (2) ~ Server ~
J'ai créé un fichier de dictionnaire python pour Neocomplete
J'ai fait une prévision météo de type bot avec Python.
J'ai créé une application graphique avec Python + PyQt5
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
[IOS] J'ai créé un widget qui affiche la tendance de Qiita dans Pythonista3. [Python]
J'ai créé un programme cryptographique César en Python.
J'ai fait un jeu de cueillette avec Python
Made Mattermost Bot avec Python (+ Flask)
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
J'ai fait un jeu d'éclairage de sapin de Noël avec Python
J'ai créé une application de notification de nouvelles en ligne avec Python
J'ai créé un module Python pour traduire les commentaires
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
J'ai essayé de faire LINE BOT avec Python et Heroku
J'ai fait un robot discord
J'ai fait un blackjack avec Python.
J'ai créé wordcloud avec Python.
J'ai fait un jeu de frappe simple avec tkinter de Python
J'ai créé un package pour filtrer les séries chronologiques avec python
[VSCode] J'ai créé un extrait d'utilisateur pour Python print f-string
J'ai essayé de créer LINE-bot avec Python + Flask + ngrok + LINE Messaging API
J'ai créé une application de livre simple avec python + Flask ~ Introduction ~
Emballage Python de l'API Qiita pour le traitement par lots pour récupérer les publications Qiita
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
J'ai écrit un script Python qui exporte tous mes articles à l'aide de l'API Qiita v2
J'ai créé un site d'apprentissage C ++
J'ai créé un script de traduction basé sur CUI (2)
J'ai fait un wikipedia gacha bot
J'ai créé ma propre bibliothèque Python
Quine Post avec l'API Qiita (Python)
J'ai fait un circuit simple avec Python (AND, OR, NOR, etc.)
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
Une histoire sur l'ajout d'une API REST à un démon créé avec Python
Python> J'ai créé un code de test pour mon propre fichier externe
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
J'ai créé un formulaire de tweet Nyanko avec Python, Flask et Heroku
J'ai créé beaucoup de fichiers pour la connexion RDP avec Python
[Python] J'ai créé une visionneuse d'images avec une fonction de tri simple.
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python