2015-08-11 5 views
5

Ich frage mich, wie RequestReader und Route in Finch gebunden werden. Ich habe kein vollständiges Beispiel dafür gefunden.wie RequestReader an Route in Finch zu binden ist

Dieses Beispiel stammt von Finch Github, und es funktioniert ordnungsgemäß.

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

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

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

Ich verstehe, dass dieser Code Weg bekommen „Hallo“ und wird die Antwort „Hallo Welt“

und dann will ich zurückkehren Request, um es zu binden.

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) 

Ich dachte, dieser Code bedeutet, wenn die URL angegeben wird "http://localhost:3000/hello?foo=3" es wird die Antwort zurück "me u got". Der Antwortstatus ist jedoch 404.

Ich denke, ich habe etwas falsch für die Kombination zwischen Route und RequestHeader.

Vielleicht kann mir jemand hier helfen, auch wäre es besser, ein paar gute Dokumente über diesen Finch zu teilen. die Version stößt so häufig und das Dokument ist veraltet https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/

Antwort

6

Danke für die Nachfrage! Ich glaube, das ist die erste Finch-Frage zu StackOverflow.

Da 0,8 (die has been released today) ist es durchaus möglich ist Router s zu komponieren und RequestReader s zusammen, um den ? combinator mit (Abschnitt "Composing Routers" für weitere Details).

Hier ist das Beispiel, das diese Funktionalität veranschaulicht.

// GET /hello/:name?title=Mr. 
val api: Router[String] = 
    get("hello"/string ? param("title")) { (name: String, title: String) => 
    s"Hello, $title$name!" 
    } 
Httpx.serve(":8081", api.toService) 

Der Blogeintrag, den Sie erwähnen, ist dramatisch veraltet, was für alle Blogposts so ziemlich der Fall ist. Allerdings gibt es eine comprehensive documentation auf dem Github Repo, die wir versuchen, aktuell zu halten.

+0

U sind die Schöpfer! Vielen Dank –

Verwandte Themen