Dove dovrei generare la risposta per api?

0

Ho più Modelli (Modelli in MVC), Questi modelli sono iniettati in repository e i repository sono iniettati in Controllers. Devo creare un'API per diversi endpoint. Le risposte per questi endpoint utilizzeranno i servizi di repository. La risposta sarà simile a questa;

{
"user": {
    "userId": 1,
    "id": 1,
    "name": "John",
    "surname": "Doe"
},
"posts": [{
        "id": "1",
        "title": "Lorem",
        "body": "test-2"
    },
],
"products": [{
        "id": "1",
        "name": "productA"
    },
    {
        "id": "2",
        "name": "productB"
    }
],
"services":[{
        "id": "1",
        "name": "a"
    },
    {
        "id": "2",
        "name": "b"
    }
],
"settings":[{
        "id": "1",
        "name": "settingA",
        "value" "valueA"
    },
    {
        "id": "2",
        "name": "settingsB",
        "value" "valueB"
    }
],
}

Alcune di queste chiavi (modelli + risposte di servizio) non hanno una relazione diretta l'una con l'altra. Quando ottengo i modelli da DB, voglio rimuovere le colonne non necessarie (non posso nascondermi durante l'interrogazione perché ho bisogno di loro mentre genera una risposta) Voglio modificare alcuni valori di colonna, voglio inviare alcuni valori di colonna ad alcuni servizi e ottenere risposta da questi servizi e utilizzare questa risposta per la risposta api.

La domanda è questa; Dove dovrei fare tutto questo (chiamare tutti questi servizi, repository, fare mappature, alcuni calcoli e generare risposte api.)

Se lo faccio nel controller avrò un controller grasso Se lo faccio nel repository, non sarà più un repository

Devo creare un altro servizio per iniettare tutti i servizi richiesti, generare una risposta e iniettare questo nuovo servizio nel controller?

    
posta Bold P. 08.01.2018 - 13:19
fonte

1 risposta

1

Quando hai un'API MVC che produce documenti HTML (un'app web con pagine generate dal server), è comunemente accettato che il codice per la creazione dei documenti HTML appartiene al componente View di MVC.

Il semplice fatto che un'API generi documenti in formato JSON (o XML) in realtà non cambia nulla. Dal punto di vista del server, stai ancora generando una vista.

Se si sosterrebbe che JSON non è una vista perché non può essere visualizzata dall'utente, la mia risposta è che lo stesso vale per HTML. Entrambi devono essere interpretati da un'applicazione separata sul computer del cliente per ottenere qualcosa che sia utilizzabile per l'uso.

    
risposta data 08.01.2018 - 15:59
fonte

Leggi altre domande sui tag