Erstellen Sie eine einfache API, um JSON-Dateien einzugeben und auszugeben ~ Python / Flask Edition ~

(* Seit dem Zusammenführen der Bearbeitungsanforderung hat sich der Code erheblich geändert. Die Funktion wurde nicht geändert.)

Zweck

Erstellen Sie schnell eine API, mit der Sie JSON einfach vom Client lesen und schreiben können.

Was ist in diesem Artikel zu tun?

--Verwenden Sie Python2.7 / Flask.

Was in diesem Artikel nicht zu tun ist

Hintergrund

Ich möchte die Benutzeroberfläche abhängig vom Status des Inhalts, dem Status des Benutzers usw. ändern. Ich wollte einen JSON, der den Status zurückgibt, damit ich Bildschirmstatus und -parameter hinzufügen / ändern kann, während ich einen Client (im Web) erstelle, also habe ich einen einfachen erstellt. Es ist so einfach wie das Ausführen in Ihrer lokalen Umgebung. (Es wird davon ausgegangen, dass in der Produktionsumgebung ein dedizierter Anwendungsserver verwendet wird.)

API

Es ist eine API, die JSON wie KVS behandelt, wobei der JSON-Dateiname als "Schlüssel" und die abzurufenden Daten (JSON) als "Wert" gelten. Verwenden Sie Flask lokal, um "http: //127.0.0.1: 5000" zu starten und mit ihm zu interagieren.

Rufen Sie Werte (JSON) ab, indem Sie den Schlüssel angeben

Wird verwendet, um <key> .json zu erhalten.

$ curl http://127.0.0.1:5000/api/<key> -X GET
$.ajax({
  type: 'GET'
  url:'http://127.0.0.1:5000/api/<key>'
}).done(function(res){
  //Verarbeitung nach GET
});

Hinzufügen oder Aktualisieren von Werten (JSON) durch Angabe des Schlüssels

Wird verwendet, um beispielsweise "{" status ": 0}" in " .json" zu registrieren (oder zu überschreiben).

$ curl http://127.0.0.1:5000/api/<key> -X POST\
  --data '{"status": 0}' -H "Content-type: application/json"
$.ajax({
  type: 'POST',
  url:'http://127.0.0.1:5000/api/<key>',
  data: '{"status": 0}',
  headers: {
    'Content-Type': 'application/json'
  }
}).done(function(res){
  //Verarbeitung nach POST
});

Löschen Sie den Parameter (json_key) in den dem Schlüssel zugeordneten Werten (JSON)

Wenn <key> .json beispielsweise{"<json_key>": <beliebiger Wert>}enthält, entfernen Sie das Element <json_key> aus <key> .json.

$ curl http://127.0.0.1:5000/api/<key>/<json_key> -X DELETE
$.ajax({
  type: 'DELETE',
  url:'http://127.0.0.1:5000/api/<key>/<json_key>'
}).done(function(res){
  //Verarbeitung nach LÖSCHEN
});

schrieb

Zuerst habe ich es so klein wie möglich gemacht.

API-Implementierungsteil

api.py


# -*- coding: utf-8 -*-

import json

from flask import Flask, request, jsonify


app = Flask(__name__)


"""Routing:Ruft den Prozess gemäß der Anforderungs-URI und -Methode auf und gibt das Ergebnis zurück."""
@app.route('/', methods=['GET'])
def hello():
    return 'hello:)'


@app.route('/api/<key>', methods=['GET'])
def get(key):
    model = get_model(key)
    if model is None:
        return "NOT FOUND"
    else:
        return jsonify(model)


@app.route('/api/<key>', methods=['POST'])
def post(key):
    result = set_property(key, json.loads(request.data))
    return jsonify(result)


@app.route('/api/<key>/<property_name>', methods=['DELETE'])
def delete(key, property_name):
    result = delete_property(key, property_name)
    if result is None:
        return "NOT FOUND"
    else:
        return jsonify(result)


"""Operationen am Modell"""
def get_model(key):
    return read_model(key)


def set_property(key, properties):
    data = read_model(key)
    if data is None:
        data = {}
    data.update(properties)
    result = write_model(key, data)
    return result


def delete_property(key, property_name):
    data = read_model(key)
    if data is None:
        return None
    if property_name not in data:
        return None
    del data[property_name]
    result = write_model(key, data)
    return result


"""Zugriff auf die Persistenzschicht"""
def read_model(key):
    file_name = key + '.json'
    try:
        with open(file_name, 'r') as f:
            return json.load(f)
    except IOError as e:
        print e
        return None


def write_model(key, data):
    file_name = key + '.json'
    try:
        with open(file_name, 'w') as f:
            json.dump(data, f, sort_keys=True, indent=4)
            return data
    except IOError as e:
        print e
        return None


if __name__ == '__main__':
    app.run(debug=True)

Wie benutzt man

$ python api.py

Der Webserver wird gestartet, greifen Sie also auf "http: //127.0.0.1: 5000" zu und verwenden Sie es.

Überarbeitet und auf Github platziert

Vorerst habe ich einen Test in Anfragen geschrieben und ihn auf Github gestellt.

https://github.com/naoiwata/simple-flask-api

Recommended Posts

Erstellen Sie eine einfache API, um JSON-Dateien einzugeben und auszugeben ~ Python / Flask Edition ~
So erstellen Sie eine JSON-Datei in Python
Python-Eingabe und Ausgabe
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
[Python Kivy] So erstellen Sie ein einfaches Popup-Fenster
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
Erstellen Sie einen einfachen geplanten Stapel mit Dockers Python Image und parse-crontab
[Python] Sprechen mit OpenJTalk und Talk API (bis zur Sprachausgabe)
Exportieren und Ausgeben von Dateien in Python
Python-Protokollierung und Dump an JSON
5 Möglichkeiten zum Erstellen eines Python-Chatbots
[Python] API zum Senden von Google Mail erstellen
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
Herausforderung beim Erstellen eines Zeitachsenlistenberichts mit der Toggl-API und Python
[Python] Erstellen Sie einen Linebot, um den Namen und das Alter auf das Bild zu schreiben
[Python / Tkinter] Suche nach Pandas DataFrame → Erstellen Sie ein einfaches Suchformular zur Anzeige
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Dateneingabe / -ausgabe in Python (CSV, JSON)
Erstellen Sie eine einfache GUI-App in Python
Lesen und Schreiben von JSON-Dateien mit Python
Erstellen Sie eine einfache Web-App mit Flasche
Lesen und schreiben Sie JSON-Dateien mit Python
[Python] Erstellen Sie schnell eine API mit Flask
[Python] Fügen Sie der Standardeingabedatei einen Kommentar hinzu
Erstellen Sie eine einfache App, die die Fetch-API für Ajax-Anforderungen in Flask enthält, und erklären Sie sie schnell.
Erstellen Sie eine API zum Konvertieren von PDF-Dateien in TIF-Bilder mit FastAPI und Docker
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Erstellen wir ein einfaches Empfangssystem mit dem serverlosen Python-Framework Chalice und Twilio
Verwenden Sie libsixel, um Sixel in Python auszugeben und das Matplotlib-Diagramm an das Terminal auszugeben.
[Python] Kombinieren von Listen mit Zahlen zu Zeichenfolgen und Schreiben in eine Ausgabedatei
Erstellen Sie eine Web-App, die PDF mit Flask und PyPDF2 in Text konvertiert
Erstellen Sie einen Filter, um ein Zugriffstoken mit der Graph-API (Flask) zu erhalten.
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
[Python] Listenverständnis Verschiedene Möglichkeiten zum Erstellen einer Liste
Ich möchte mit Python ein Fenster erstellen
So generieren Sie ein Python-Objekt aus JSON
Erstellen Sie eine Webmap mit Python und GDAL
Schritte zum Erstellen eines Twitter-Bots mit Python
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
So erstellen Sie ein 1-zeiliges Kivy-Eingabefeld
Stapelkonvertierung von Excel-Dateien in JSON [Python]
So erstellen Sie eine Rest-API in Django
Erstellen Sie einen Discord-Bot, der einseitig mit Python benachrichtigt (nur Anfragen und JSON werden verwendet).
[GCF + Python] So laden Sie Excel in GCS hoch und erstellen eine neue Tabelle in BigQuery
So stellen Sie pyenv unter Amazon Linux und Ubuntu ein, um eine Python 3.6.0-Umgebung zu erstellen
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
[Mac] Eine supereinfache Möglichkeit, Systembefehle in Python auszuführen und die Ergebnisse auszugeben
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
[LINE Messaging API] Erstellen Sie mit Python ein umfangreiches Menü