Я пытаюсь написать простую серию маршрутов, вот чего я хочу:

GET / должен напечатать "hello get"

POST / должен напечатать приветственное сообщение

GET /foo должен напечатать "hello foo get"

POST /foo должен напечатать "hello foo get"

Вот что у меня есть:

val route = pathSingleSlash {
    get(complete("hello get")) ~
    post(complete("hello post"))~
    path("foo") {
      get(complete("hello foo get"))~
      post(complete("hello foo post"))
    }
  }

Это работает для GET / и POST /, но и GET, и POST для /foo 404.

Я перепробовал почти все и не могу понять, что делать. Когда дело доходит до этого, документацию довольно сложно понять.

Кто-нибудь может дать мне какие-нибудь указатели?

0
Click Upvote 24 Сен 2018 в 11:20

2 ответа

Лучший ответ

Не могли бы вы попробовать это. это работает для меня.

val route1 = path("foo") {
        get(complete("hello foo get")) ~
          post(complete("hello foo post"))
      }

  val route = pathSingleSlash {
    get(complete("hello get")) ~
      post(complete("hello post"))
  }

  val finalRoute = route ~ route1

И используйте finalRoute в заявлении привязки маршрута.

val bindingFuture = Http().bindAndHandle(finalRoute, "localhost", 8085)
2
Raman Mishra 24 Сен 2018 в 09:00

Я бы рекомендовал структурировать пути таким образом для максимальной читаемости:

get & pathEndOrSingleSlash {
  complete("hello get")
} ~
post & pathEndOrSingleSlash {
  complete("hello post")
} ~
get & path("foo") & pathEndOrSingleSlash {
  complete("hello foo get")
}
post & path("foo") & pathEndOrSingleSlash {
  complete("hello foo post")
}
1
Mon Calamari 25 Сен 2018 в 10:55