Vorrei utilizzare il sistema di instradamento Akka Http, insieme al suo sistema di reiezione, ma ho bisogno di annidare la risposta Json per un rifiuto all'interno di un blocco di messaggi Json generico.Come avvolgere genericamente un rifiuto con Akka-Http
Ho lavorato in modo molto generico creando un RejectionHandler, aggiungendo casi per tutti i possibili rifiuti e gestendoli tutti con il codice di risposta e il messaggio specifici.
esempio:
// Wraps string into control block format
def WrappingBlock(msg: String) = ???
val myRejectionHandler = RejectionHandler
.newBuilder()
.handle{case MalformedRequestContentRejection(msg, detail) =>
complete(BadRequest, WrappingBlock(msg)) }
... // Further lines for all other possible rejections
... // along with their response codes and messages.
... // It would be nice if this was just generic code
... // rather than specific to every rejection type.
.result()
val routes = handleRejections(myRejectionHandler){
...
}
Tuttavia, quello che vorrei è il codice di risposta che Akka HTTP fornisce di default e anche il messaggio di stampa piuttosto che viene fornito, appena annidato all'interno di un controllo involucro JSON senza una linea per ogni possibile tipo di rifiuto. Sembra che dovrebbe essere possibile ma non sono stato in grado di completarlo.
È molto interessante non aver pensato di utilizzare una combinazione con la risposta della mappa, vedrò questa opzione. – AlexC
È possibile scrivere come RejectionHandler personalizzato? Non potevo venire con una soluzione del genere perché richiede 'Route' in uscita dove, come nel tuo caso, abbiamo' Direttiva'. – expert
@ruslan, non sono sicuro di quello che stai chiedendo. È certamente possibile creare un gestore di rifiuto personalizzato come descritto qui: http://doc.akka.io/docs/akka-stream-and-http-experimental/2.0.2/scala/http/routing-dsl/rejections.html# Customizing_Rejection_Handling. Non sei sicuro del perché intendi in 'Route' vs' Directive' in uscita. Forse creare una nuova domanda basata su questo che descrive meglio la tua situazione. – cmbaxter