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
。
我正在尝试实现一个简单的 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
。