Tôi là người mới bắt đầu trong khuôn khổ Django REST và cần lời khuyên của bạn. Tôi đang phát triển một dịch vụ web. Dịch vụ này phải cung cấp giao diện REST cho các dịch vụ khác. Giao diện REST, mà tôi cần triển khai, không hoạt động trực tiếp với các mô hình của tôi (ý tôi là các thao tác get, put, post, xóa). Thay vào đó, nó cung cấp các dịch vụ khác với một số kết quả tính toán. Theo yêu cầu, dịch vụ của tôi thực hiện một số tính toán và chỉ trả lại kết quả (không lưu trữ kết quả trong cơ sở dữ liệu của chính nó).
Dưới đây là sự hiểu biết của tôi về cách giao diện REST có thể được thực hiện. Đúng nếu tôi đã sai lầm.
- Tạo lớp mà làm cho các tính toán. Đặt tên là 'CalcClass'. CalcClass sử dụng các mô hình trong công việc của mình.
- Params cần thiết cho các tính toán được chuyển đến các nhà xây dựng.
- Thực hiện các hoạt động calc. Nó trả về kết quả là 'resultClass'.
- Tạo kết quả.
- Xuất phát từ đối tượng.
- Nó chỉ có các thuộc tính chứa kết quả calc.
- Một phần của kết quả calc được biểu diễn dưới dạng bộ dữ liệu. Theo tôi hiểu, sẽ tốt hơn nếu tuần tự hóa tiếp theo để triển khai một lớp riêng cho các kết quả đó và thêm danh sách các đối tượng như vậy vào resultClass.
- Tạo serializer cho resultClass.
- Xuất phát từ serializer.Serializer.
- Các kết quả calc là chỉ đọc, do đó, sử dụng hầu hết lớp Trường cho các trường, thay vì các lớp chuyên biệt, chẳng hạn như IntegerField.
- Tôi không nên thực hiện phương thức save () trên resultClass, cũng như trên serializer, vì tôi sẽ không lưu trữ kết quả (tôi chỉ muốn trả về chúng theo yêu cầu).
- Impl serializer cho các kết quả lồng nhau (hãy nhớ bộ dữ liệu được đề cập ở trên).
- Tạo View để trả về kết quả tính toán.
- Xuất phát từ APIView.
- Chỉ cần có được ().
- Trong get () tạo CalcClass với các tham số được lấy từ yêu cầu, gọi calc () của nó, lấy resultClass, tạo serializer và truyền resultClass cho nó, trả về hồi đáp (serializer.data).
- URL
- Không có gốc api trong trường hợp của tôi. Tôi chỉ nên có URL để nhận kết quả calc khác nhau (calc với diff params).
- Thêm định dạng cuộc gọi format_suffix_potypes để duyệt api.
Tôi đã bỏ lỡ một cái gì đó? Là cách tiếp cận là chính xác nói chung?