Soy principiante en Django REST framework y necesito tu consejo. Estoy desarrollando un servicio web. El servicio tiene que proporcionar una interfaz REST a otros servicios. La interfaz REST, que necesito implementar, no funciona con mis modelos directamente (me refiero a las operaciones get, put, post, delete). En cambio, proporciona otros servicios con algunos resultados de cálculo. En una solicitud, mi servicio hace algunos cálculos y solo devuelve los resultados (no almacena los resultados en su propia base de datos).
A continuación, entiendo cómo se podría implementar esa interfaz REST. Corrígeme si estoy equivocado.
- Crear clase que hace los cálculos. Nómbrelo 'CalcClass'. CalcClass utiliza los modelos en su trabajo.
- Los parámetros necesarios para los cálculos se pasan al constructor.
- Implementar la operación calc. Devuelve resultados como 'ResultClass'.
- Crear ResultClass.
- Derivado del objeto.
- Solo tiene atributos que contienen los resultados de cálculo.
- Una parte de los resultados del cálculo se representa como una tupla de tuplas. Según tengo entendido, sería mejor para una mayor serialización implementar una clase separada para esos resultados y agregar una lista de dichos objetos a ResultClass.
- Crear serializador para ResultClass.
- Derivar de serializadores. Serializador.
- Los resultados de cálculo son de solo lectura, por lo tanto, use principalmente la clase Field para campos, en lugar de clases especializadas, como IntegerField.
- No debería implicar el método save () ni en ResultClass ni en Serializer, porque no voy a almacenar los resultados (solo quiero devolverlos a pedido).
- Impl serializador para resultados anidados (recuerde la tupla de tuplas mencionadas anteriormente).
- Crear vista para devolver los resultados del cálculo.
- Derivar de APIView.
- Solo necesita obtener ().
- En get () cree CalcClass con los parámetros recuperados de la solicitud, llame a su calc (), obtenga ResultClass, cree Serializer y pásele el ResultClass, devuelva Response (serializer.data).
- URLs
- No hay raíz api en mi caso. Debería tener URL para obtener varios resultados de cálculo (cálculo con parámetros de diferencia).
- Agregue el formato format_suffix_patterns para la exploración de la API.
¿Me he perdido algo? ¿El enfoque es correcto en general?