Sono principiante nel framework REST di Django e ho bisogno del tuo consiglio. Sto sviluppando un servizio web. Il servizio deve fornire l'interfaccia REST ad altri servizi. L'interfaccia REST, che devo implementare, non funziona direttamente con i miei modelli (intendo le operazioni get, put, post, delete). Fornisce invece altri servizi con alcuni risultati di calcolo. Su richiesta, il mio servizio effettua alcuni calcoli e restituisce i risultati (non memorizza i risultati nel proprio database).
Di seguito è la mia comprensione di come tale interfaccia REST potrebbe essere implementata. Correggimi, se sbaglio.
- Crea una classe che effettua i calcoli. Chiamalo "CalcClass". CalcClass utilizza i modelli nel suo lavoro.
- I parametri necessari per i calcoli vengono passati al costruttore.
- Implementare l'operazione calc. Restituisce i risultati come 'ResultClass'.
- Crea ResultClass.
- Derivato dall'oggetto.
- Ha solo attributi che contengono i risultati di calc.
- Una parte dei risultati di calc è rappresentata come tupla di tuple. A quanto ho capito, sarebbe meglio per un'ulteriore serializzazione implementare una classe separata per tali risultati e aggiungere un elenco di tali oggetti a ResultClass.
- Crea serializzatore per ResultClass.
- Deriva da serializzatori.Serializer.
- I risultati di calc sono di sola lettura, quindi utilizza principalmente la classe Field per i campi, anziché le classi specializzate, come IntegerField.
- Non dovrei impl il metodo save () né su ResultClass, né su Serializer, perché non ho intenzione di memorizzare i risultati (voglio solo restituirli su richiesta).
- Serializzatore Impl per risultati nidificati (ricordare la tupla di tuple sopra menzionata).
- Crea vista per restituire i risultati del calcolo.
- Deriva da APIView.
- Ho solo bisogno di ottenere ().
- In get () crea CalcClass con i parametri recuperati dalla richiesta, chiama calc (), ottieni ResultClass, crea Serializer e passa la ResultClass ad esso, restituisce Response (serializer.data).
- URL
- Nel mio caso non esiste una radice API. Dovrei avere solo URL per ottenere vari risultati di calc (calc con parametri diff).
- Aggiungi chiamando format_suffix_patterns per la navigazione API.
Ho dimenticato qualcosa? L'approccio è corretto in generale?