Django REST çerçevesinde yeni başlıyorum ve tavsiyene ihtiyacım var. Bir web hizmeti geliştiriyorum. Hizmet, diğer hizmetlere REST arabirimi sağlamalıdır. Uygulamam gereken REST arayüzü, modellerimle doğrudan çalışmıyor (yani get, put, post, delete işlemleri). Bunun yerine, diğer hizmetlere bazı hesaplama sonuçları sağlar. Bir istek üzerine hizmetim bazı hesaplamalar yapar ve sadece sonuçları geri döndürür (sonuçları kendi veritabanında saklamaz).
Aşağıda bu REST arayüzünün nasıl uygulanabileceğine dair anlayışım var. Eğer Yanlışsam beni düzelt.
- Hesaplamaları yapan sınıf oluşturun. 'CalcClass' olarak adlandırın. CalcClass modelleri çalışmalarında kullanır.
- Hesaplamalar için gerekli parametreler yapıcıya iletilir.
- Kireç işlemini uygulayın. Sonuçları 'ResultClass' olarak döndürür.
- ResultClass oluşturun.
- Nesneden türetilmiştir.
- Sadece calc sonuçlarını içeren niteliklere sahiptir.
- Kireç sonuçlarının bir kısmı, tuples tuples olarak temsil edilir. Anladığım kadarıyla, bu seriler için ayrı bir sınıf uygulamak ve bu nesnelerin ResultClass'a listesini eklemek daha fazla serileştirme için daha iyi olurdu.
- ResultClass için Serializer oluşturun.
- Serileştiricilerden türetin.
- Calc sonuçları salt okunurdur, bu nedenle IntegerField gibi özel sınıflar yerine alanlar için çoğunlukla Field sınıfını kullanın.
- Ben sonuçları depolamak değil çünkü ben sadece ResultClass ne de Serializer üzerinde save () yöntemi impl olmamalıdır (Ben sadece istek üzerine onları iade etmek istiyorum).
- İç içe geçmiş sonuçlar için serileştirici ekleyin (yukarıda belirtilen tuples demetini unutmayın).
- Hesaplama sonuçlarını döndürmek için Görünüm oluştur.
- APIView'den türetilmiştir.
- Sadece ().
- Get () 'de, istekten alınan parametrelerle CalcClass'ı yaratın, calc () öğesini çağırın, ResultClass'ı alın, Serializer oluşturun ve ResultClass'ı ona iletin, Response (serializer.data) döndürün.
- URL'ler
- Benim durumumda api kökü yok. Sadece çeşitli kireç sonuçları (fark parametreleri ile kireç) almak için URL'lerim olmalıdır.
- Api taraması için çağrı biçimi_suffix_patterns ekleyin.
Bir şey mi kaçırdım? Yaklaşım genel olarak doğru mu?