これは特定のユースケースの質問ではありませんが、私の経験でAPIをやっていること、特にDjangoとDjango Rest Frameworkを使用して気づいたことがあります。Django Rest Frameworkでモデルの変更を処理する方法は?
何ヶ月も前に、私はクライアントのプロジェクトのために維持しているAPIに問題がありました。
class Person:
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
その後、対応するシリアライザ:もちろん
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = '__all__'
は、そのは、ビューセットおよびルートがそれを指す対応:
http://localhost:8000/api/v1/persons/
のは、我々は以下のモデルがあるとしましょう
これは私のAPIの第1版であることに注意してください。
この時点ですべて正常ですか?
は今、私のクライアントはなったように、私はあることを私のモデルを変更する必要があります...私たちは、別途代わりに姓と名の人のフルネームを受信する必要があること
を尋ねた:
class Person:
full_name = models.CharField(max_length=200)
このバージョンのAPIを使用するクライアント(モバイルアプリ)は3種類あります。明らかに私はAPIを変更したくないのですが、新しいアプローチを新しいバージョンに入れたいと思っています。
が、この時点でAPI の第一バージョンが既に
を変更するように、第一のバージョンのシリアライザは、私は以下の回答で読むことを期待するもの、モデルと連結されているが、あなたたちはこの問題に対処する方法でありますDjangoと私は同じスタックを使って次のプロジェクトに取り掛かるべきです。
編集:私の質問は、APIとモデルをモデルから切り離す方が良いかどうかを理解することです。私は非常に基本的な例を示しましたが、事態がますます複雑になるケースがあります。たとえば、中間テーブルにフィールドを追加するために、throughオプションを使用するようにM2Mリレーションシップを変更する必要がありました。
「おすすめ商品」とはどういう意味ですか?複雑なケースでは、たとえば、中間テーブルにさらにフィールドが必要なため、M2Mフィールドを変更してスルーオプションを使用する必要がありました。私の質問のobjetiveは、モデルからAPIをデカップリングする方が良いかどうかを理解することです... –