Использование базового Flask и Flask-RESTful для разработки APIPython

Программы на Python
Anonymous
Использование базового Flask и Flask-RESTful для разработки API

Сообщение Anonymous »

Я собираюсь разработать REST API для нашего будущего приложения. Я решил использовать для этого Python Flask. Но на данный момент я не знаю, какой вариант использовать. Должен ли я использовать базовый пакет Flask или Flask с расширением Flask-RESTful. Я нашел некоторые преимущества и недостатки в обоих случаях.

Ниже приведен пример двух API, выполняющих одно и то же, но в Flask и Flask-RESTful:

< strong>Версия 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/', methods=['GET'])
def userById(id):
return jsonify({ 'username': usersList[id]  })

@app.route('/user/', methods=['GET'])
def getUserByName(name):
# Show some user information
return "Some info"

@app.route('/user/', 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/')
api.add_resource(UserByName, '/user/')

app.run()
Используя Flask-RESTful, я не могу получить один ресурс для обслуживания нескольких связанных конечных точек, таких как GET /user/, GET /user/ , GET /user//friends и т. д. И я не знаю, является ли создание новых классов для простых подресурсов хорошей практикой, потому что я вероятно, в конечном итоге будет много классов. По этой причине я более склонен использовать только Flask, поскольку определены только функции, а конечные точки могут свободно определяться в соответствии с моими потребностями.

Учитывая вышеизложенное, можно ли создать множество классов для подресурсов в Flask-RESTful? Или мне лучше использовать Flask? Или Flask-RESTful дает действительно хорошие преимущества перед Flask?

Подробнее здесь: https://stackoverflow.com/questions/537 ... evelopment

Вернуться в «Python»