(* Depuis la fusion de la demande de modification, le code a considérablement changé. Il n'y a pas de changement dans la fonction.)
Créez rapidement une API qui vous permet de lire et d'écrire facilement du JSON à partir du client.
--Utilisez Python2.7 / Flask. --Générer / lire / écrire un fichier JSON au lieu de DB.
Je souhaite modifier l'interface utilisateur en fonction de l'état du contenu, de l'état de l'utilisateur, etc. Je voulais un JSON qui renvoie l'état afin que je puisse ajouter / modifier les états et les paramètres de l'écran lors de la création d'un client (sur le Web), alors j'en ai fait un simple. C'est aussi simple que de l'exécuter dans votre environnement local. (On suppose qu'un serveur d'applications dédié sera utilisé dans l'environnement de production.)
API
C'est une API qui traite JSON comme KVS, avec le nom de fichier JSON comme «clé» et les données à récupérer (JSON) comme «valeur». Utilisez Flask localement pour lancer http: //127.0.0.1: 5000
et interagir avec lui.
Utilisé pour obtenir <key> .json
.
$ 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){
//Traitement après GET
});
Utilisé pour enregistrer (ou remplacer), par exemple, {" status ": 0}
dans <key> .json
.
$ 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){
//Traitement après POST
});
Si <key> .json
contient, par exemple,{"<json_key>": <valeur arbitraire>}
, supprimez l'élément <json_key> ʻelement from
$ 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){
//Traitement après DELETE
});
Tout d'abord, je l'ai fait aussi petit que possible.
api.py
# -*- coding: utf-8 -*-
import json
from flask import Flask, request, jsonify
app = Flask(__name__)
"""Routing:Appelle le processus en fonction de l'URI et de la méthode de la demande et renvoie le résultat."""
@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)
"""Opérations sur le modèle"""
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
"""Accès à la couche de persistance"""
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
Le serveur Web démarre, alors accédez et utilisez http: //127.0.0.1: 5000
.
Pour le moment, j'ai écrit un test dans les requêtes et l'ai mis sur Github.
https://github.com/naoiwata/simple-flask-api
Recommended Posts