[PYTHON] Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten

Überblick

** Richten Sie einen Server mit dem Python ** Web Framework ** Flask ** ein und zeigen Sie auf den ** Endpunkt mit einem Objekt einrichten ** (z. B. eine Zeichenfolge, eine Liste, ein Objekt Ihrer eigenen Klasse) * Eine Geschichte, wenn Sie * ** senden möchten.

Ich glaube, ich vergesse es oft jedes Mal, deshalb werde ich es hier zusammenfassen.

Fazit für vielbeschäftigte Menschen

** Absender ** ist

  1. Machen Sie das, was Sie senden möchten, zu einer Zeichenkette
  2. Fügen Sie es in das Wörterbuch ein
  3. json.dumps()

Ich denke, es ist (für mich) am einfachsten, es zu senden.

Der ** Empfänger ** empfängt die Daten und erledigt die vom Absender geleistete Arbeit in umgekehrter Reihenfolge.

  1. Empfangen Sie Daten mit `` `request.data```
  2. Verwenden Sie `json.loads ()`, um von der Zeichenfolge zum Wörterbuch zurückzukehren.
  3. Extrahieren Sie den Wert aus dem Wörterbuch.
  4. Setzen Sie den Wert auf den ursprünglichen Typ zurück.

Wie macht man

Der Fluss ist so. Ein Überblick. Ich verwende oft die Methode, ein Objekt endgültig in eine Zeichenfolge umzuwandeln, diese Zeichenfolge in ein Diktat, json.dumps, einzufügen und sie dann zu senden.

Absender.py



〜〜〜〜
Was möchten Sie senden= something

case1 isinstance(Was möchten Sie senden,Ein Klassenobjekt): ## もしWas möchten Sie sendenがオブジェクトのとき
Wenn Sie senden möchten, kann binalisiert werden: ##Wenn das Objekt binär sein kann
        'pickle.dumps()Bin das Objekt mit(byte)Lasst uns.'
        my_binary = pickle.dumps(Was möchten Sie senden)
        GO_TO case2

    else: ##Wenn das Objekt nicht binär sein kann
        'Machen Sie es auf irgendeine Weise binär oder im Fall Ihres eigenen Klassenobjekts
Sie müssen eine Serialisierungsfunktion schreiben. Zum Beispiel eine Funktion, die alle Mitgliedsvariablen einer Klasse in ein Wörterbuch schreibt. Zum Beispiel zu_dict()Implementieren Sie die Funktion.'
        my_binary =Was möchten Sie senden.to_dict()
        GO_TO case4

case2 isinstance(Was möchten Sie senden, byte): ## もしWas möchten Sie sendenがbyteのとき
    'Base64 was Sie senden möchten.b64encode()Machen wir es mit zu einer Zeichenkette.'
    my_str = base64.b64encode(Was möchten Sie senden)
    GO_TO case3

case3 isinstance(Was möchten Sie senden, str): ## もしWas möchten Sie sendenがstr(文字列)のとき
    'Lassen Sie es uns in das Wörterbuch setzen.'
    my_dict = {"my_object":Was möchten Sie senden}
    GO_TO case4


case4 isinstance(Was möchten Sie senden, dict): ## もしWas möchten Sie sendenがすでにdictのとき
    'Json, was du senden willst.dumps()Dann können Sie loslegen.'
Was möchten Sie senden= json.dumps(Was möchten Sie senden)
    EXIT_CASE



assert type(Was möchten Sie senden) =String(str), 'Bitte gehen Sie zurück zum Anfang.'

## print(Was möchten Sie senden)
## >>> '{"my_object": my_value}'

requests.post(url="<Zielendpunkt>",Was möchten Sie senden,
                  headers={'Content-Type': 'application/json'})

Empfänger.py



〜〜〜〜
@app.route('/receive')
def receive():
    data = request.data ##"Was Sie senden möchten" per Post gesendet ist Anfrage.Sie können es mit Daten empfangen.
    data = json.loads(data)['my_object'] ##Zuallererst json.Kehren Sie mit Lasten zum Wörterbuch zurück.
##Schlüssel ist mein_Wert des Objekts(Was wurde in Form einer Zeichenfolge gesendet)Bekommen.

wenn Daten binär(byte)Wenn Sie zurückkehren möchten: 
        'Daten zu base64.b64decode()Lassen Sie uns mit Byte dekodieren.'
        data2 = base64.b64decode(data)
        
Wenn Sie elif-Daten an ein Klassenobjekt zurückgeben möchten:
wenn Gurke.Wenn Sie mit Lasten zurückkehren können:
            data3 = pickle.loads(data2)
sonst Wenn Sie pickle nicht mit Ihrem eigenen Klassenobjekt usw. verwenden können.:
            'Deserialisierungsfunktion von selbst, dikt_to_obj()Lassen Sie uns eine Funktion wie implementieren und zum ursprünglichen Klassenobjekt zurückkehren'
            data3 = dict_to_obj(data2)


Zusammenfassung

Dieses Mal habe ich zusammengefasst, wie etwas auf dem mit flask eingerichteten Endpunkt gepostet wird.

Diesmal hier.

Ende.

Recommended Posts

Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten
Wenn Sie es so verwenden möchten, wie es ist, wenn Sie es mit Lambda-Memo verwenden
Python Hinweis: Wenn Sie die Attribute eines Objekts kennen möchten
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten
Persönliche Best-Practice-Vorlage, die verwendet werden soll, wenn Sie MVP mit Flask erstellen möchten
Wenn Sie mit dem Django REST-Framework filtern möchten
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Verwenden Sie aggdraw, wenn Sie mit Kissen schön zeichnen möchten
Wenn Sie die Anfangsdaten von Django mit Relationen registrieren möchten
Wenn Sie das Intervall der Achsenskala mit APLpy anpassen möchten
Senden Sie CSS mit Flask komprimiert an Gzip
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Ein Gist-Repository, das Sie verwenden können, wenn Sie es mit ansible ausprobieren möchten
Wenn Sie eine Spalte spaltenweise durch einen fehlenden Wert (NaN) ersetzen möchten
Bedeutet Memo, wenn versucht wird, maschinelles Lernen mit 50 Bildern durchzuführen
Senden Sie eine E-Mail mit Python an Spushis Adresse
Wenn Sie den Chrome-Treiber aktualisieren möchten.
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Senden Sie msgpack mit Ajax an die flk (werkzeug) Umgebung
Was verwenden Sie beim Testen mit Python?
So erstellen Sie eine Umgebung, wenn Sie Python2.7 nach der Installation von Anaconda3 verwenden möchten
Ich möchte Google Mail mit Python senden, kann dies jedoch aufgrund eines Fehlers nicht
[OpenCV] Wenn Sie überprüfen möchten, ob es mit imread richtig gelesen wird
Was tun, wenn bei der Installation von Python mit pyenv eine Fehlermeldung angezeigt wird?
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Was tun, wenn bei der Installation von Python 2 mit pyenv ein OpenSSL-Fehler auftritt?
Ich möchte mit einem Knopf am Kolben übergehen
Versuchen Sie, mit MVC eine RESTful-API mit Flask 1.0.2 zu erstellen
[Python] Sie können ein Objekt mithilfe des Pickle-Moduls in einer Datei speichern.
Links, um mit Sublime Text zu tun, was Sie wollen
Wenn die Variable, die Sie in Matplotlib als hochgestellt verwenden möchten, aus zwei oder mehr Zeichen besteht
Dinge zu tun, wenn Sie anfangen, sich mit Django zu entwickeln
Wenn Sie in der for-Anweisung plt.save möchten
Wenn beim Python-Scraping ein Fehler auftritt (Anforderungen)
Was tun, wenn Sie bei Verwendung von ortoolpy.logistics_network keine japanischen Spaltennamen verwenden möchten?
Bei der Verwendung von Tensorboard mit Pytorch ist ein Fehler aufgetreten
Nützliche Operation, wenn Sie alle Probleme in mehreren Programmiersprachen mit Codewars lösen möchten
[Lösung] Wenn ich versuche, mit GAE eine Verbindung zu CloudSQL herzustellen, wird nur bei dev_appserver ein ImportError angezeigt.
Was tun, wenn beim Versuch, pip mit pyenv zu verwenden, ein undefinierter Fehler angezeigt wird?
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
[Python] Wenn Sie plötzlich ein Anfrageformular erstellen möchten
Kenntnisse, die Sie beim Programmieren von Wettbewerben mit Python2 benötigen
So laden Sie keine Bilder, wenn Sie PhantomJS mit Selen verwenden
Bis Sie die SVG-Datei mit AutoCAD zu PNG bearbeiten.
Warum müssen Sie dtype angeben, wenn Sie keras pad_sequences verwenden?
Was tun, wenn beim Importieren von _ssl ein Fehler auftritt?
Vorsichtsmaßnahmen bei der Verwendung von Python mit AtCoder
Wenn Sie python2.x unter modernem Gentoo Linux verwenden möchten
Dinge, die Sie bei der Verwendung von CGI mit Python beachten sollten.
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Bei Verwendung von optparse mit iPython
Ich möchte die Effizienz mit Python auch im experimentellen System verbessern. (4) Verwenden Sie ser.close (), wenn ein Fehler mithilfe der try-Syntax ausgegeben wird.
Senden Sie mit Python mit Google Mail
Wenn Sie mehrere Versionen derselben Python-Bibliothek verwenden möchten (virtuelle Umgebung mit venv)
Wenn Sie mehrere Zeichen in einer Zeichenfolge ersetzen möchten, ohne reguläre Ausdrücke in der Python3-Serie zu verwenden
Wenn Sie Datenwissenschaftler werden möchten, beginnen Sie mit Kaggle
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Wenn es schwierig ist, das zu kopieren, was Sie mit vue erstellt haben