私は現在、自分の会社のAPIを構築する方法を学んでいます。私は非常に長い間これをやっていないので、私は基本的には現時点ではジュニア開発者です。Django Rest Framework:IDフィールドから一意の難読化IDを生成
いくつかのチュートリアルに続いて、私は自分のAPIをクラスベースのビューを使って非常に基本的なレベルで稼働させました。
以前、私はいくつかのシリアライザのフィールドの1つとして「id」を持っていました。私のマネージャーはこれが好きではなく、ビジネスに関する機密情報を明らかにすると指摘しました(JSONのcustomer_id = 13になったら、他の12人の顧客がいると推測できます。 5432の他の仕事などがあると推測することができます)。
シリアライザのフィールドに「id」を追加する方法を理解しようとしていますが、lookup_argsとurlsの助けになります。
以前は、APIの顧客のURLはwww.example.com/api/customer/5でした.5はデータベースの「pk」で、その顧客のJSONデータが返されます。
私はpkを使用する方法についてはわかりませんが、何とかそれを難読化しています。
ID = STR(serializers.UUIDField(フォーマット=進))
:私が試した何serializers.pyclass CustomerListSerializer(ModelSerializer):
url = HyperlinkedIdentityField(
view_name='api:customer_list_detail',
lookup_field='pk'
)
delete_url = HyperlinkedIdentityField(
view_name='api:customer_list_delete',
lookup_field='pk'
)
user = SerializerMethodField()
class Meta:
model = Customer
fields = [
'id',
'url',
'company_name',
'contact_name',
'contact_email',
'user',
'delete_url'
]
def get_user(self, obj):
return str(obj.user.name)
でmodels.py
class Customer(models.Model):
company_name = models.CharField(max_length=100)
contact_name = models.CharField(max_length=100)
contact_email = models.CharField(max_length=100)
user = models.OneToOneField(User)
@staticmethod
def get_absolute_url():
return reverse('details')
def __str__(self):
return self.company_name + ', ' + self.contact_name + ' (' + .contact_email + ')'
class Meta:
unique_together=(('contact_email','user'),)
上
カスタマー・モデル
これまでと同じIDを返したところです。私はそれが一意の数字を生成する方法だと思ったが、そうではないようだ。
私は「django rest api unique IDを生成する」の検索を試みましたが、無関係な結果が得られています。または、結果を解析して必要なものを見つけるのに十分に進んでいません。私が言及したように、私はこれでは非常に新しいですが、物事を理解するのが楽しいです!