Saya pemula dalam kerangka Django REST dan butuh saran Anda. Saya sedang mengembangkan layanan web. Layanan harus menyediakan antarmuka REST ke layanan lain. Antarmuka REST, yang perlu saya terapkan, tidak bekerja dengan model saya secara langsung (maksud saya operasi get, put, post, delete). Sebagai gantinya, ia menyediakan layanan lain dengan beberapa hasil perhitungan. Berdasarkan permintaan, layanan saya membuat perhitungan dan mengembalikan hasilnya (tidak menyimpan hasilnya dalam database sendiri).
Di bawah ini adalah pemahaman saya tentang bagaimana antarmuka REST dapat diimplementasikan. Koreksi saya, jika saya salah.
- Buat kelas yang membuat perhitungan. Beri nama 'CalcClass'. CalcClass menggunakan model dalam pekerjaannya.
- Params yang diperlukan untuk perhitungan diteruskan ke konstruktor.
- Laksanakan operasi kalk. Ini mengembalikan hasil sebagai 'ResultClass'.
- Buat ResultClass.
- Berasal dari objek.
- Hanya saja memiliki atribut yang berisi hasil kalk.
- Salah satu bagian dari hasil perhitungan direpresentasikan sebagai tupel tupel. Seperti yang saya pahami, akan lebih baik untuk serialisasi lebih lanjut untuk mengimplementasikan kelas yang terpisah untuk hasil tersebut dan menambahkan daftar objek tersebut ke ResultClass.
- Buat Serializer untuk ResultClass.
- Berasal dari serializers. Serializer.
- Hasil kalk hanya baca, jadi gunakan sebagian besar kelas bidang untuk bidang, bukan kelas khusus, seperti IntegerField.
- Saya seharusnya tidak mengimplementasikan metode save () baik pada ResultClass, maupun Serializer, karena saya tidak akan menyimpan hasilnya (saya hanya ingin mengembalikannya berdasarkan permintaan).
- Serializer impl untuk hasil bersarang (ingat tupel tupel yang disebutkan di atas).
- Buat Lihat untuk mengembalikan hasil perhitungan.
- Berasal dari APIView.
- Perlu hanya mendapatkan ().
- Di get () buat CalcClass dengan params yang diambil dari permintaan, panggil kalnya (), dapatkan ResultClass, buat Serializer, dan berikan ResultClass ke sana, kembalikan Respons (serializer.data).
- URL
- Tidak ada akar api dalam kasus saya. Saya seharusnya hanya memiliki URL untuk mendapatkan berbagai hasil kalk (kalk dengan par berbeda).
- Tambahkan memanggil format_suffix_patterns untuk menjelajah api.
Apakah saya melewatkan sesuatu? Apakah pendekatannya benar secara umum?