Я собираюсь разработать REST API для нашего будущего приложения.Я решил использовать Python Flask для этого.Но на данный момент я не знаю, какой вариант использовать.Должен ли я использовать базовый пакет Flask или Flask с расширением Flask-RESTful.Я нашел некоторые преимущества и недостатки в обоих.
Ниже приведен пример двух API, выполняющих одно и то же, но в Flask и Flask-RESTful:
Версия Flask :
from flask import Flask, jsonify
app = Flask(__name__)
usersList = ['Aaron', 'Bianca', 'Cat', 'Danny', 'Elena']
@app.route('/users', methods=['GET'])
def users():
return jsonify({ 'users': [user for user in usersList] })
@app.route('/user/<int:id>', methods=['GET'])
def userById(id):
return jsonify({ 'username': usersList[id] })
@app.route('/user/<string:name>', methods=['GET'])
def getUserByName(name):
# Show some user information
return "Some info"
@app.route('/user/<string:name>', methods=['POST'])
def addUserByName(name):
usersList.append(name)
return jsonify({ 'message': 'New user added' })
app.run()
Flask-RESTful версия :
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
usersList = ['Aaron', 'Bianca', 'Cat', 'Danny', 'Elena']
class UsersList(Resource):
def get(self):
return { 'users' : [ user for user in usersList ] }, 200
class UserById(Resource):
def get(self, id):
return { 'username': usersList[id] }
class UserByName(Resource):
def post(self, name):
usersList.append(name)
return { 'message': 'New user added'}
api.add_resource(UsersList, '/users')
api.add_resource(UserById, '/user/<int:id>')
api.add_resource(UserByName, '/user/<string:name>')
app.run()
Используя Flask-RESTful, я не могу получить один ресурс для обслуживания нескольких связанных конечных точек, таких как GET /user/<int:id>
, GET /user/<string:name>
, GET /user/<int:id>/friends
и т. Д. ИЯ не знаю, является ли создание новых классов для простых подресурсов хорошей практикой, потому что я, вероятно, получу много классов.По этой причине я более склонен к использованию только Flask, так как определены только функции и конечные точки могут быть свободно определены в соответствии с моими потребностями.
Имея в виду все вышесказанное, можно ли создавать много классов для подресурсов в Flask-RESTful?Или мне лучше использовать Flask?Или Flask-RESTful предоставляет некоторые действительно хорошие преимущества перед Flask?