私はDjangoRESTフレームワークの初心者であり、アドバイスが必要です。私はWebサービスを開発しています。このサービスは、他のサービスへのRESTインターフェースを提供する必要があります。実装する必要のあるRESTインターフェースは、モデルを直接操作していません(つまり、get、put、post、delete操作を意味します)。代わりに、他のサービスにいくつかの計算結果を提供します。リクエストに応じて、私のサービスはいくつかの計算を行い、結果を返します(結果を独自のデータベースに保存しません)。
以下は、そのRESTインターフェースを実装する方法についての私の理解です。私が間違っているなら、私を訂正してください。
- 計算を行うクラスを作成します。「CalcClass」という名前を付けます。CalcClassは、その作業でモデルを使用します。
- 計算に必要なパラメーターはコンストラクターに渡されます。
- 計算操作を実装します。結果を「ResultClass」として返します。
- ResultClassを作成します。
- オブジェクトから派生。
- 計算結果を含む属性のみがあります。
- 計算結果の一部は、タプルのタプルとして表されます。私が理解しているように、これらの結果に対して別のクラスを実装し、そのようなオブジェクトのリストをResultClassに追加することで、さらにシリアル化する方がよいでしょう。
- ResultClassのシリアライザーを作成します。
- serializers.Serializerから派生します。
- 計算結果は読み取り専用であるため、IntegerFieldなどの特殊なクラスではなく、ほとんどの場合、フィールドにFieldクラスを使用します。
- 結果を保存するつもりはないので、ResultClassにもSerializerにもsave()メソッドを実装しないでください(要求に応じてそれらを返したいだけです)。
- ネストされた結果のImplシリアライザー(上記のタプルのタプルを思い出してください)。
- ビューを作成して計算結果を返します。
- APIViewから派生します。
- get()が必要です。
- get()で、リクエストから取得したパラメータを使用してCalcClassを作成し、そのcalc()を呼び出し、ResultClassを取得し、Serializerを作成して、それにResultClassを渡し、Response(serializer.data)を返します。
- URL
- 私の場合、APIルートはありません。さまざまな計算結果(diffパラメータを使用した計算)を取得するためのURLが必要です。
- APIブラウジング用の呼び出しformat_suffix_patternsを追加します。
私は何か見落としてますか?アプローチは一般的に正しいですか?