以“ Flaskish”方式创建Flask REST API

问题描述 投票:0回答:1

我对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”?

python flask flask-restful
1个回答
0
投票

我认为您返回数据的方式很好(尽管如果您正在为其他人开发,他们会很快希望您实现消息字段和状态代码,以防插入失败,例如)]

如果您需要em,则仅需要模式(即使SQLAlchemy允许您在没有em的情况下工作-或至少没有由python定义)

Flask-restful是组织您的路线和资源的好主意

只需继续努力,并实现您当时需要的一切。通常,您不会遇到“死胡同”的问题,而这将使您以后无法使用Flask实现东西。最重要的是,Flask并非“被调教”的,并且不会“希望”您去做所有的事情(尽管很多都是个好主意)。您可以跳过以上所有内容,而专注于不同的事情,或者您现在可以做所有事情,就可以了。但是,绝对有更多其他事情可以代替,或者整天整天增加更多端点...

© www.soinside.com 2019 - 2024. All rights reserved.