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