Python-Anfänger haben versucht, die REST-API an einem Tag zu implementieren

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.

Hintergrund

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.

Implementierung

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)

Impressionen

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

Python-Anfänger haben versucht, die REST-API an einem Tag zu implementieren
Implementieren Sie die REST-API schnell in Python
Versuchen Sie, zwei Stapel in Python auf einem Array zu implementieren
[WP REST API v2] Laden Sie Bilder mit Python hoch
Ein Liner in Python
Evernote-API in Python
C-API in Python 3
Python-Anfänger haben es in 3 Tagen von der Installation des Betriebssystems bis zur Ausführung der Twitter-API versucht
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Hit Mastodons API in Python
Fizzbuzz in Python (in einer Zeile)
DMD in Python 1D
Lassen Sie uns Yuma in Python 3 implementieren
Blender Python API in Houdini (Python 3)
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Generierung von Spezifikationen und Code in der REST-API-Entwicklung (Python Edition)
Abrufen der arXiv-API in Python
Klicken Sie in Python auf die Sesami-API
Python-Anfänger haben Hello World in 30 Sekunden mit der Mikroframework-Flasche ausprobiert
Erstellen Sie Google Mail in Python ohne Verwendung der API
"Der Typ, der alle Twitter-Konten in der Datenbank blockiert", erstellt von Anfängern des Python-Lerntages
Klicken Sie auf die Web-API in Python
Cloud DevOps-Kochbuch Teil 4 - Entdecken Sie DevOps DirectMail in Python mit der REST-API
Implementierung eines einfachen Algorithmus in Python 2
Führen Sie unittest in Python aus (für Anfänger)
Webcodierer versucht Excel in Python
Greifen Sie mit Python auf die Twitter-API zu
Ich habe Line Benachrichtigung in Python versucht
Python-Anfänger versuchten es herauszufinden
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
Behandeln Sie mehrere Python-Versionen in einem Jupyter
Ich habe versucht, PLSA in Python zu implementieren
Mausbedienung mit Windows-API in Python
CGI Server (1) Python Edition in einer Zeile
Versuchen Sie es mit der Wunderlist-API in Python
Ich habe versucht, Permutation in Python zu implementieren
Versuchen Sie, die Kraken-API mit Python zu verwenden
[Episode 2] Anfänger haben Numeron AI mit Python ausprobiert
[Episode 3] Anfänger haben Numeron AI mit Python ausprobiert
Ich habe versucht, PLSA in Python 2 zu implementieren
Tweet mit der Twitter-API in Python
Holen Sie sich Google Fit API-Daten in Python
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
[Python] REST API wesentliche, bequeme Zusammenfassung der Bibliothek
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, ADALINE in Python zu implementieren
[Episode 0] Anfänger haben Numeron AI mit Python ausprobiert
[Episode 1] Anfänger haben Numeron AI mit Python ausprobiert
Probieren Sie schnell die Microsoft Face API in Python aus
Einzeiler webServer (mit CGI) in Python
Ich habe versucht, PPO in Python zu implementieren
Zerlegen Sie Befehlsargumente in einer Zeile in Python
[Python] Bool-Wertinversion in einer Zeile
Geben Sie den von der Oanda REST API in Python erhaltenen Wechselkurs in MongoDB ein
Python Tag 1
Ein Anfänger des maschinellen Lernens versuchte an einem Tag, eine Sheltie-Urteils-KI zu erstellen
Ein Liner, der neunundneunzig in Python ausgibt
3,14 π Tag, versuchen Sie also, in Python auszugeben