Akka Http 在 Segment PathMatcher 的帮助下检索字符串值

Akka Http retrieve a string value with help of Segment PathMatcher

我正在尝试实现一个简单的 API,我可以在其中获取路径参数作为 String。这是我的测试代码:

class SimpleRouteTest extends WordSpec
  with Matchers
  with ScalatestRouteTest {

  val routes: Route = pathPrefix("foo") {
    get {
      complete("GET /foo")
    } ~
    pathPrefix(Segment) { seg =>
      get {
        complete(s"GET /foo/$seg")
      }
    }
  }

  "The routes should handle" should {
    "GET /foo correctly" in {
      Get("/foo") ~> routes ~> check {
        responseAs[String] shouldBe  "GET /foo"
      }
    }
    "GET /foo/any" in {
      Get("/foo/any") ~> routes ~> check {
        responseAs[String] shouldBe  "GET /foo/any"
      }
    }
  }

}

不幸的是,第二次测试失败并显示消息:

"GET /foo[]" 不等于 "GET /foo[/any]"

谁能指点一下,我哪里做错了?

谢谢

这就是您的代码试图执行的操作:

  • 匹配前缀为/foo的路径
  • 如果方法是 GET,用 "GET /foo"
  • 完成
  • 否则 如果剩余路径以某个段 seg 开始,则以 s"GET /foo/$seg"
  • 结束

~ 运算符在第一个操作数处停止,因为满足所有条件(以 /foo 开始并且是 GET)。您可能希望将更精确的作为第一个操作数传递,或者在第一种情况下指定您想要 PathEnd