我对Flask非常陌生,我正在尝试逐步进行操作...
我的数据库模式:
CREATE TABLE requests (
uuid VARCHAR(255) NOT NULL PRIMARY KEY,
fname VARCHAR(255) NOT NULL,
lname VARCHAR(255) NOT NULL,
requested TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_last TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
我能够成功创建我的第一个端点:
from flask import Flask, request, jsonify
import pymysql.cursors
import pymysql
import uuid
# DB conn
# conn = ...
# ...
app = Flask(__name__)
@app.route('/api/requests', methods=['POST'])
def create_request():
fname = request.json['fname']
lname = request.json['lname']
# 'data' will be returned as JSON
data = request.json
new_uuid = str(uuid.uuid4())
data['id'] = new_uuid
with conn.cursor() as cursor:
db_data = (fname, lname)
query = 'INSERT INTO `requests` (`uuid`, `fname`, `lname`) VALUES (%s, %s, %s)'
cursor.execute(query, db_data)
conn.commit()
return jsonify(data)
app.run(debug=True)
一切正常,并按预期进行。但是,我有一种强烈的感觉,这种方式不是创建API的“ Flask”方式。那正确吗?例如:
data
...flask_restful
?我有各种各样的此类问题,到目前为止,在互联网上找到答案一直非常困难... SQLAlchemy,flask-marshmallow
等使我不知所措...
根据我的示例,您如何使我的代码更像“ Flaskish”?
我认为您返回数据的方式很好(尽管如果您正在为其他人开发,他们会很快希望您实现消息字段和状态代码,以防插入失败,例如)]
如果您需要em,则仅需要模式(即使SQLAlchemy允许您在没有em的情况下工作-或至少没有由python定义)
Flask-restful是组织您的路线和资源的好主意
只需继续努力,并实现您当时需要的一切。通常,您不会遇到“死胡同”的问题,而这将使您以后无法使用Flask实现东西。最重要的是,Flask并非“被调教”的,并且不会“希望”您去做所有的事情(尽管很多都是个好主意)。您可以跳过以上所有内容,而专注于不同的事情,或者您现在可以做所有事情,就可以了。但是,绝对有更多其他事情可以代替,或者整天整天增加更多端点...