Почему Akka-Http Routing идет не так, как надо? - PullRequest
0 голосов
/ 15 апреля 2019

Так что, в основном, я пишу некоторый код, который позволит пользователям загружать файлы на сервер.Я уже преуспел в загрузке файла через форму HTML (с MultiPart.FormData), но когда я пробую 'curl -X POST -F file = "filepath" localhost: 8080 / upload', я получаю '404 not found'message.

Я уже прочитал документацию об Akka, но я просто не могу понять, почему она работает так, а не иначе.Что я тут не так делаю?

val route =
  post {
    path("upload") {
      fileUpload("file") {
        case (metadata, byteSource) => 
          val sink = FileIO.toPath(Paths.get("path of the image") resolve metadata.fileName)
          val writeResult = byteSource.runWith(sink)
          onSuccess(writeResult) { _ =>
            complete("file got uploaded")
          }
      }
    }
  } ~
    complete("404 not found")

1 Ответ

0 голосов
/ 15 апреля 2019

Вы можете увидеть в директиве path source , что он принимает префикс пути с концом пути. Поэтому, если вы используете path("upload"), он будет принимать только пути, оканчивающиеся на /upload/, но не будет принимать пути, оканчивающиеся на /upload (без символа конца пути /).

Если вы хотите использовать пути /upload/ и /upload, вы должны использовать

pathPrefix("upload") ~ pathEndOrSingleSlash

Также вы можете использовать директиву ignoreTrailingSlash .

...