1

これはかなり幅広い質問ですが、(少なくとも)例を挙げれば答えられると思うので質問します。情報不足と思われる話題でもあります。Tastypie などの Django の API フレームワークに関する情報を調べても、なぜそれを使用すべきかについての情報が見つかりません。それらは、他の API フレームワークに対する利点を単に述べているだけです。

Tastypie の github の Readme には次のように記載されています。

You need an API that is RESTful and uses HTTP well.

私は?誰かが私にこれを納得させることができますか? 同様に、なぜ API フレームワークを使用する必要があるのでしょうか? 上記のフレームワークを利用するように Web アプリケーションを設計する必要がありますか? それらにはどのようなユースケースがありますか?

質問の範囲でご容赦ください。私は REST 自体についてたくさん読んだことがありますが、RESTful API を使用する Web アプリを設計するときの適切なプラクティスについてはほとんど見つけることができません。

ありがとう、

パラゴンRG

4

1 に答える 1

2

これは、そもそも何を設計したいのかを実際に知っている場合、理想的には自明であるべき種類の質問です。要約して言っているのではなく、設計目標が明確であれば、API フレームワークがいつ価値があるかを知る必要があります。あなたはtastypie docsからのステートメントを誤解しています:「RESTfulでHTTPをうまく使用するAPIが必要です。」. ご覧のとおり、これは「Why Tastypie」というセクションの一部です。つまり、HTTP をうまく使った RESTful API を求めるなら、tastypie が必要だということです。彼らは、実際にこれが必要だと言っているのではありません。これらのニーズを持っている人に推奨されるソリューションであるということだけです.

一般的な観点から、django プロジェクト用の API を作成するとします。API を設計するにはさまざまな方法がありますが、非常に広く受け入れられている形式は REST です。これは、読み取り、更新、作成、および削除に関して、URL を非常に理解しやすく予測可能なものにするパターンです。ここで、この一般的で広く受け入れられている REST パターンを使用して API を作成するとします...

API を作成する場合、かなり一般的で定型的な機能がある程度あります。django プロジェクトでモデルを照会し、フィールドの完全またはサブセット、またはそのデータのカスタム形式を返す必要があります。ここから、API フレームワークのメリットについて説明します...

この質問をさせてください... API の最も一般的なニーズをカバーする堅牢な機能セットを備えたフレームワークが存在する場合、すべてをゼロからコーディングしたいと思いますか? これは、自分の Web サイトをコーディングする代わりに django を使用することを選択した理由とほぼ同じ状況です。

django には 2 つの非常に人気のある API フレームワークがあります。tastypieピストン
です。どちらも同様の機能を提供し、非常に高速に起動して実行できます。モデルに直接マップするハンドラー クラスを作成できます。デフォルトでは、さまざまな形式 (json、yaml など) による完全な CRUD アクセスが可能です。どちらのフレームワークも、通常は django モデルの周りにハンドラーをバインドすることを前提としていますが、それに制限されているわけではありません。

認証: フレームワークは、使用したいタイプのインスタンスを作成してハンドラーに割り当てるのとほぼ同じくらい簡単に処理します。

形式: (前述) API は、json、yaml、xml などの複数のデータ形式を自動的に処理できます。

要するに、フレームワークは、この機能を絶えず繰り返すという面倒な作業を取り除くためにあるということです。すべてのハードワークが完了しました。特定の処理関数をコーディングして、それらを URL にマップするだけです。行く準備ができました。

いくつかの単純なハンドラーが必要な場合は、いくつかのビューを作成して、リクエスト オブジェクトと戻り値を手動で処理することもできます。しかし、より堅牢な API を作成したい場合は、時間を節約して、基礎となるものを使用してください。

さらに、tastypie またはピストンのチュートリアルを参照して、モデルに既にバインドされているリソースのエクスポートを開始するのがいかに簡単かを確認してください。

于 2012-05-07T04:34:43.287 に答える