(* Seit dem Zusammenführen der Bearbeitungsanforderung hat sich der Code erheblich geändert. Die Funktion wurde nicht geändert.)
Erstellen Sie schnell eine API, mit der Sie JSON einfach vom Client lesen und schreiben können.
--Verwenden Sie Python2.7 / Flask.
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.
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
});
Wird verwendet, um beispielsweise "{" status ": 0}" in "
$ 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
});
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
});
Zuerst habe ich es so klein wie möglich gemacht.
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)
$ python api.py
Der Webserver wird gestartet, greifen Sie also auf "http: //127.0.0.1: 5000" zu und verwenden Sie es.
Vorerst habe ich einen Test in Anfragen geschrieben und ihn auf Github gestellt.
https://github.com/naoiwata/simple-flask-api
Recommended Posts