Ich habe an der [Nagoya.Swift + May Study Session] teilgenommen (https://nagoyaswiftplus.connpass.com/event/53937/). Dies ist eine Zusammenfassung dessen, was ich getan habe.
Normalerweise schreibe ich Swift, aber ich interessierte mich für maschinelles Lernen usw., deshalb habe ich mich vorerst an die Python-Syntax gewöhnt und eine REST-API implementiert, die ich in der Implementierung in anderen Sprachen erlebt habe.
Implementierte GET unter Bezugnahme auf @ Morinikkis REST-API schnell in Python implementieren.
Jetzt, da ich weiß, wie man einen Endpunkt erstellt, verwende ich auch POST, PUT und DELETE, während ich das [Dokument] von peewee (http://docs.peewee-orm.com/en/latest/peewee/querying.html) lese. Ich habe es implementiert.
api.py
# -*- coding: utf-8 -*-
from flask import Flask, jsonify, abort, make_response, request
import peewee as pe
import random
import json
#Zufällige Zeichenfolge
def random_string(length, seq='0123456789abcdefghijklmnopqrstuvwxyz'):
sr = random.SystemRandom()
return ''.join([sr.choice(seq) for i in range(length)])
db = pe.SqliteDatabase("datas.db")
#Modell-
class User(pe.Model):
userId = pe.TextField()
name = pe.TextField()
caption = pe.TextField()
old = pe.IntegerField()
class Meta:
database = db
api = Flask(__name__)
#Benutzer abrufen
@api.route('/user/<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,
"name":user.name,
"caption":user.caption,
"old":int(user.old)
}
}
return make_response(jsonify(result))
#hinzufügen
@api.route('/user', methods=['POST'])
def post_user():
userId = 'us_'+random_string(6)
dataDict = json.loads(request.data)
try:
q = User.insert(userId=userId, name=dataDict["name"], caption=dataDict["caption"], old=dataDict["old"])
q.execute() # perform the insert.
user = User.get(User.userId == userId)
except User.DoesNotExist:
abort(404)
result = {
"result":True,
"data":{
"userId":user.userId,
"name":user.name,
"caption":user.caption,
"old":int(user.old)
}
}
return make_response(jsonify(result))
#aktualisieren
@api.route('/user/<string:userId>', methods=['PUT'])
def put_user(userId):
dataDict = json.loads(request.data)
try:
q = User.update(name=dataDict["name"], caption=dataDict["caption"], old=dataDict["old"]).where(User.userId == userId)
q.execute()
except User.DoesNotExist:
abort(404)
result = {
"result":True
}
return make_response(jsonify(result))
#Löschen
@api.route('/user/<string:userId>', methods=['DELETE'])
def del_user(userId):
try:
q = User.delete().where(User.userId == userId)
q.execute()
except User.DoesNotExist:
abort(404)
result = {
"result":True,
}
return make_response(jsonify(result))
#Holen Sie sich alle Benutzer
@api.route('/users', methods=['GET'])
def get_users():
try:
users = User.select()
except User.DoesNotExist:
abort(404)
arr = []
for user in users:
arr.append({
"userId":user.userId,
"name":user.name,
"caption":user.caption,
"old":int(user.old)
})
result = {
"result":True,
"data":arr
}
return make_response(jsonify(result))
@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)
Die Implementierung dauerte ca. 5 Stunden. Ich denke, es war ziemlich erfolgreich für das erste Python. Ich habe es jedoch nicht geschrieben, während ich es verstanden habe, daher ist es notwendig, mein Verständnis zu vertiefen.
Danach war es gut, einen iOS-Client erstellen zu können (aus Zeitgründen werden nur GET und DELETE implementiert) und ihn in der Freizeit zu testen (ich wollte Swift irgendwo schreiben, weil es eine Lernsitzung namens Nagoya.Swift + war).
Recommended Posts