[PYTHON] Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask

Aperçu

** Configurez un serveur avec le python ** framework web ** flask ** et pointez vers le ** set up endpoint avec un objet ** (par exemple, une chaîne, une liste, un objet de votre propre classe) * Une histoire que vous souhaitez envoyer * **.

Je pense que je l'oublie souvent à chaque fois, je vais donc le résumer ici.

Conclusion pour les gens occupés

** Sender ** est 1.Faites ce que vous voulez envoyer dans une chaîne de caractères 2. Mettez-le dans le dictionnaire 3. json.dumps()

Je pense que c'est plus simple (pour moi) de l'envoyer.

Le ** récepteur ** reçoit les données et effectue le travail effectué par l'expéditeur à l'envers.

  1. Recevoir des données avec `` `request.data ''
  2. Utilisez json.loads () '' `` pour revenir de la chaîne au dictionnaire.
  3. Extrayez la valeur du dictionnaire.
  4. Renvoyez la valeur à son type d'origine.

Comment faire

Le flux est comme ça. Un aperçu. J'utilise souvent la méthode pour finalement transformer un objet en une chaîne, mettre cette chaîne dans un dict, json.dumps, puis l'envoyer.

Expéditeur.py



〜〜〜〜
Ce que vous voulez envoyer= something

case1 isinstance(Ce que vous voulez envoyer,Un objet de classe): ## もしCe que vous voulez envoyerがオブジェクトのとき
si vous voulez envoyer peut être binalisé: ##Si l'objet peut être binaire
        'pickle.dumps()Bin l'objet avec(byte)Allons.'
        my_binary = pickle.dumps(Ce que vous voulez envoyer)
        GO_TO case2

    else: ##Si l'objet ne peut pas être binaire
        'Rendez-le binaire d'une manière ou d'une autre, ou dans le cas de votre propre objet de classe
Vous devez écrire une fonction de sérialisation. Par exemple, une fonction qui écrit toutes les variables membres d'une classe dans un dictionnaire. Par exemple, pour_dict()Implémentez la fonction.'
        my_binary =Ce que vous voulez envoyer.to_dict()
        GO_TO case4

case2 isinstance(Ce que vous voulez envoyer, byte): ## もしCe que vous voulez envoyerがbyteのとき
    'Base64 ce que vous voulez envoyer.b64encode()Transformons-le en une chaîne de caractères avec.'
    my_str = base64.b64encode(Ce que vous voulez envoyer)
    GO_TO case3

case3 isinstance(Ce que vous voulez envoyer, str): ## もしCe que vous voulez envoyerがstr(文字列)のとき
    'Mettons-le dans le dictionnaire.'
    my_dict = {"my_object":Ce que vous voulez envoyer}
    GO_TO case4


case4 isinstance(Ce que vous voulez envoyer, dict): ## もしCe que vous voulez envoyerがすでにdictのとき
    'Json ce que vous voulez envoyer.dumps()Alors vous êtes prêt à partir.'
Ce que vous voulez envoyer= json.dumps(Ce que vous voulez envoyer)
    EXIT_CASE



assert type(Ce que vous voulez envoyer) =Chaîne(str), 'Revenez au début.'

## print(Ce que vous voulez envoyer)
## >>> '{"my_object": my_value}'

requests.post(url="<Point de terminaison de destination>",Ce que vous voulez envoyer,
                  headers={'Content-Type': 'application/json'})

Bénéficiaire.py



〜〜〜〜
@app.route('/receive')
def receive():
    data = request.data ##"Ce que vous voulez envoyer" envoyé par courrier est une demande.Vous pouvez le recevoir avec des données.
    data = json.loads(data)['my_object'] ##Tout d'abord, json.Revenir au dictionnaire avec des charges,
##la clé est ma_valeur de l'objet(Ce qui a été envoyé sous la forme d'une chaîne)Recevoir.

si données binaires(byte)Lorsque vous souhaitez revenir à: 
        'données en base64.b64decode()Décodons en octet avec.'
        data2 = base64.b64decode(data)
        
Lorsque vous souhaitez renvoyer des données elif à un objet de classe:
si cornichon.Quand vous pouvez revenir avec des charges:
            data3 = pickle.loads(data2)
else Si pickle ne peut pas être utilisé avec un objet de votre propre classe:
            'Fonction de désérialisation par elle-même, dict_to_obj()Implémentons une fonction comme et revenons à l'objet de classe d'origine'
            data3 = dict_to_obj(data2)


Résumé

Cette fois, j'ai résumé comment publier quelque chose sur le point final configuré avec flask.

Cette fois par ici.

fin.

Recommended Posts

Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
Remarque Python: lorsque vous souhaitez connaître les attributs d'un objet
Paramètres lorsque vous souhaitez exécuter python-mecab avec travis
Modèle de bonnes pratiques personnelles à utiliser lorsque vous souhaitez créer MVP avec Flask
Lorsque vous souhaitez filtrer avec le framework Django REST
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Utilisez aggdraw lorsque vous voulez dessiner magnifiquement avec un oreiller
Lorsque vous souhaitez enregistrer les données initiales de Django avec des relations
Lorsque vous souhaitez ajuster l'intervalle de l'échelle de l'axe avec APLpy
Envoyer du CSS compressé à Gzip avec Flask
Que faire si vous ne parvenez pas à envoyer un e-mail à Yahoo avec Python.
Un référentiel essentiel à utiliser lorsque vous souhaitez l'essayer avec ansible
Lorsque vous souhaitez remplacer une colonne par une valeur manquante (NaN) colonne par colonne
Signifie mémo lorsque vous essayez de faire de l'apprentissage automatique avec 50 images
Envoyez un email à l'adresse de Spushi avec python
Lorsque vous souhaitez mettre à jour le pilote Chrome.
J'ai essayé de détecter un objet avec M2Det!
Envoyer msgpack avec ajax à l'environnement flask (werkzeug)
Qu'utilisez-vous lorsque vous testez avec Python?
Comment créer un environnement lorsque vous souhaitez utiliser python2.7 après l'installation d'Anaconda3
Je souhaite envoyer Gmail avec Python, mais je ne peux pas en raison d'une erreur
[OpenCV] Lorsque vous voulez vérifier s'il est lu correctement avec imread
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Je veux faire la transition avec un bouton sur le ballon
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Liens pour faire ce que vous voulez avec Sublime Text
Lorsque la variable que vous souhaitez utiliser comme exposant dans matplotlib comporte deux caractères ou plus
Choses à faire lorsque vous commencez à développer avec Django
Lorsque vous voulez plt.save dans l'instruction for
Lorsqu'une erreur se produit dans le scraping python (requêtes)
Que faire si vous ne souhaitez pas utiliser de noms de colonnes japonais lors de l'utilisation d'ortoolpy.logistics_network
J'ai eu une erreur lors de l'utilisation de Tensorboard avec Pytorch
Opération utile lorsque vous souhaitez résoudre tous les problèmes dans plusieurs langages de programmation avec Codewars
[Solution] Lorsque j'essaye de me connecter à CloudSQL avec GAE, j'obtiens une ImportError uniquement lorsque dev_appserver.
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
[Django] Mémorandum lorsque vous souhaitez communiquer de manière asynchrone [Python3]
[Python] Si vous souhaitez soudainement créer un formulaire de demande
Connaissances à connaître lors de la programmation de concours avec Python2
Comment ne pas charger d'images lors de l'utilisation de PhantomJS avec Selenium
Jusqu'à ce que vous modifiiez le fichier SVG avec AutoCAD en PNG.
Pourquoi vous devez spécifier dtype lors de l'utilisation de keras pad_sequences
Que faire lorsqu'une erreur se produit avec import _ssl
Précautions lors de l'utilisation de Python avec AtCoder
Lorsque vous souhaitez utiliser python 2.x sur Gentoo Linux moderne
Choses à garder à l'esprit lors de l'utilisation de cgi avec python.
Lorsque vous souhaitez lancer une commande UNIX sur Python
Lors de l'utilisation d'optparse avec iPython
Je souhaite améliorer l'efficacité avec Python même dans le système expérimental (4) Utilisez ser.close () lorsqu'une erreur est générée en utilisant la syntaxe try.
Envoyer en utilisant Python avec Gmail
Lorsque vous souhaitez utiliser plusieurs versions de la même bibliothèque Python (environnement virtuel utilisant venv)
Lorsque vous souhaitez remplacer plusieurs caractères dans une chaîne de caractères sans utiliser d'expressions régulières dans la série python3
Si vous souhaitez devenir data scientist, commencez par Kaggle
N'écrivez pas Python si vous voulez l'accélérer avec Python
Quand il est difficile de copier ce que vous avez construit avec vue