Depuis que j'ai appris l'API lors de la session d'étude, j'ai essayé d'implémenter une API REST simple en Python. Puisque la méthode d'installation de Python est expliquée ailleurs, je vais l'omettre.
Avec Flask, un framework d'application web Installez Peewee de ORM.
$ pip install flask
$ pip install peewee
Importez les données suivantes dans la base de données.
user.tsv
#userId userCompany userDiscountRate
Impression de conformité Us0ymuik Dense Forest 46
US77qmr2 Forêt dense du Japon occidental Divertissement 49
Solution de la jungle USDJ7EJ1 18
Usjx15uh Yokohama énorme dur doux 7
USQD7WPE Crédit Face Book 1
Solution mobile d'or 7 de Uswvrn3s
Solution de jeu social Us3h2d0a Benza 26
Usa4c2hm Industrie du jeu social Virtualware 7
.
.
.
Connectez-vous à la base de données avec Peewee et enregistrez les données.
import.py
# -*- coding: utf-8 -*-
import peewee
#Spécifiez la base de données
db = peewee.SqliteDatabase("data.db")
#Définir le modèle utilisateur
class User(peewee.Model):
userId = peewee.TextField()
userCompany = peewee.TextField()
userDiscountRate = peewee.IntegerField()
class Meta:
database = db
#Création de table utilisateur
User.create_table()
#Lisez le fichier tsv ligne par ligne, divisez-le par onglets et enregistrez chacun d'eux dans la base de données
for line in open("user.tsv", "r"):
(userId, userCompany, userDiscountRate) = tuple(line[:-1].split("\t"))
if userDiscountRate.isdigit(): #Prend en charge les commentaires sur la première ligne.
User.create(userId = userId,
userCompany = userCompany,
userDiscountRate = int(userDiscountRate))
api.py
# -*- coding: utf-8 -*-
from flask import Flask, jsonify, abort, make_response
import peewee
# import json
db = peewee.SqliteDatabase("data.db")
class User(peewee.Model):
userId = peewee.TextField()
userCompany = peewee.TextField()
userDiscountRate = peewee.IntegerField()
class Meta:
database = db
api = Flask(__name__)
@api.route('/getUser/<string:userId>', methods=['GET'])
def get_user(userId):
try:
user = User.get(User.userId == userId)
except User.DoesNotExist:
abort(404)
result = {
"result":True,
"data":{
"userId":user.userId,
"userCompany":user.userCompany,
"userDiscountRate":user.userDiscountRate
}
}
return make_response(jsonify(result))
#Si vous ne voulez pas en faire Unicode ↓
# return make_response(json.dumps(result, ensure_ascii=False))
@api.errorhandler(404)
def not_found(error):
return make_response(jsonify({'error': 'Not found'}), 404)
if __name__ == '__main__':
api.run(host='0.0.0.0', port=3000)
$ curl -i http://0.0.0.0:3000/getUser/Usdj7ej1
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 118
Server: Werkzeug/0.11.10 Python/3.5.1
Date: Fri, 27 May 2016 06:29:57 GMT
{"data": {"userCompany": "Solution de forêt dense", "userDiscountRate": 18, "userId": "Usdj7ej1"}, "result": true}%