как привязать RequestReader к Route в Finch

Интересно, как связать RequestReader и Route вместе в Finch. Я не нашел полный пример об этом.

Этот пример исходит от finch github, и он работает правильно.

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

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

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

Я понимаю, что этот код получит путь «привет» и вернет ответ «привет, мир»

а затем я хочу привязать к нему RequestHeader.

  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)

Я думал, что этот код означает, что если указан URL-адрес "http://localhost:3000/hello?foo=3", вернет ответ «ты меня понял». Однако статус ответа — 404.

Я думаю, что я сделал что-то неправильно для комбинации между Route и RequestHeader.

Может быть, кто-то может помочь мне с этим, также было бы лучше поделиться какой-нибудь хорошей документацией об этом Finch. версия так часто обновляется, а документ устарел https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/


person Xiaohe Dong    schedule 11.08.2015    source источник


Ответы (1)


Спасибо, что спросили об этом! Я считаю, что это первый вопрос Финча на StackOverflow.

Поскольку выпущена сегодня), вполне возможно составить вместе Router и RequestReader с помощью комбинатора ? (см. раздел "Составление маршрутизаторов" для более подробной информации).

Вот пример, иллюстрирующий эту функциональность.

// 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)

Сообщение в блоге, о котором вы упоминаете, сильно устарело, что в значительной степени относится ко всем сообщениям в блоге. Хотя в репозитории Github есть подробная документация, которую мы пытаемся держи актуальным.

person Vladimir Kostyukov    schedule 11.08.2015
comment
Ты создатель! Спасибо - person Xiaohe Dong; 11.08.2015