2015-08-11 5 views
5

Mi chiedo come associare RequestReader e Route insieme in Finch. Non ho trovato un esempio completo a riguardo.come associare RequestReader a Route in Finch

Questo esempio proviene da finch Github e funziona correttamente.

import io.finch.route._ 
import com.twitter.finagle.Httpx 

val api: Router[String] = get("hello") { "Hello, World!" } 

Httpx.serve(":3000", api.toService) 

Capisco che questo codice sarà ottenere il percorso "ciao" e tornerà la risposta "ciao mondo"

e poi voglio legare RequestHeader ad esso.

val doSomethingWithRequest: RequestReader[String] = 
    for { 
     foo <- param("foo") 
     bar <- param("bar") 
    } yield "u got me" 

    val api: Router[RequestReader[String]] = Get/"hello" /> doSomethingWithRequest 

    val server = Httpx.serve(":3000", api.toService) 

Ho pensato che questo codice indica se viene dato l'url "http://localhost:3000/hello?foo=3" tornerà la risposta "u mi ha fatto". Tuttavia, lo stato della risposta è 404.

Penso di aver fatto qualcosa di sbagliato per la combinazione tra Route e RequestHeader.

Forse qualcuno può aiutarmi su questo, inoltre, sarebbe meglio condividere qualche buon documento su questo Finch. la versione sta sbattendo così frequentemente e il documento è obsoleto https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/

risposta

6

Grazie per aver chiesto questo! Credo che questa sia la prima domanda di Finch su StackOverflow.

Da 0,8 (che has been released today) è abbastanza possibile comporre Router s e RequestReader s insieme usando il combinatore ? (vedere la sezione "Composing Routers" per maggiori dettagli).

Ecco l'esempio che illustra questa funzionalità.

Il post del blog che stai citando è drammaticamente obsoleto, che è praticamente il caso per tutti i post del blog. Sebbene, ci sia un comprehensive documentation sul repository Github, che stiamo cercando di mantenere attuale.

+0

U sei il creatore! Grazie –

Problemi correlati