Flaskチュートリアルサイト こちら によると、RESTful APIを作成するには、_restful.Resource
_を拡張するクラスを作成し、次のようにしてAPIに追加します。
_app = Flask(__name__)
api = restful.Api(app)
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
_
ただし、私は、Flaskアプリで見慣れている@app.route('/path')
デコレータで関数を使用するだけのチュートリアルをいくつか見てきました。たとえば、 ここ 、彼らは持っています:
_@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
_
そして ここ :
_@app.route('/')
def api_root():
return 'Welcome'
_
_restful.Resource
_クラスを使用した場合と、装飾された関数のみを使用した場合の違いは何ですか?違いがない場合、RESTful APIを作成するために、慣例として何をすべきですか?
短い答え:
restful.Resourceは Flask-Restful 拡張機能からのものであり、これはFlask自体ではありません。 Miguelのチュートリアル 使用 Flask =安らかなインターフェースを書く。
長い答え:
まず、Flaskに加えて、多数の Flask extensions があります。これらは一緒に動作しますが、個別のパッケージであり、個々の作者によって書かれています。 Flask-RestfulはFlaskの拡張です。
Miguelのチュートリアルでは、Flaskを単独で使用してRESTful APIを作成する方法について説明しています。
Flask-Restful ホイールの再発明から私たちの一部を救う目的で、カスタムクラス(またはカスタムPythonデータ構造)をRESTful Webサービス Flask-RESTplus 、Flask-Restfulのフォーク、swagger UIを使用してapiドキュメントを自動生成します。
さらに、Flaskも ドキュメント化MethodViewの使用により、開発者は独自のRESTful API。並行して、 Flask-Restless はSqlAlchemyクラスをRESTful Webサービスに変換することを約束します。
更新(2016年7月18日) flask-api は、関数/ビューを休息のインターフェースに変え、 Django休息フレームワーク の作者であるトムクリスティーによって設計されました。
ローマへの道はたくさんあります。
#from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
多くのエンドポイントが必要な場合、クラスの代わりにメソッドを使用すると、すぐに混乱する可能性があります。クラス/リソースは、ロジックを分離および分離するためのより良い方法です。さらに、コードがより読みやすくなり、変更/修正が容易になります
Flask-restfulを使用するのがおそらく最良の方法ですが、APIのブループリントを作成し、ルーティングを構成し、リクエストパラメータを処理し、通常のすべてのAPIが必要とする多くのことを行うには、かなり面倒です。
私はこの軽量フレームワークをフラスコ・レストフルの上に構築しました。これにより、必要なすべての配線について心配することなく、レストフルAPIを簡単に構築でき、APIの定義とビジネスロジックのコーディングに集中できます。あなたはそれをここでチェックすることができます: https://github.com/sebastiandev/Peach
これは、NOSQLデータベースに重点を置いていますが、それは、デフォルトで提供されるデータベースのプロキシがmongodb用であるためであり、sqlが必要な場合は、sqlachemyのプロキシを作成できます(または構築する時間が見つかるまで待機します)。