加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 在akka-http指令中嵌套CRUD路径

发布时间:2020-12-16 09:56:02 所属栏目:安全 来源:网络整理
导读:我刚开始使用 Scala和Akka.我正在写一个小型REST服务.我正在尝试创建以下路径: GET localhost:8080 / api / my-service(返回资源集合) GET localhost:8080 / api / my-service / 6(返回指定id的资源) POST localhost:8080 / api / my-service(使用正文中
我刚开始使用 Scala和Akka.我正在写一个小型REST服务.我正在尝试创建以下路径:

> GET localhost:8080 / api / my-service(返回资源集合)
> GET localhost:8080 / api / my-service / 6(返回指定id的资源)
> POST localhost:8080 / api / my-service(使用正文中的数据创建新资源)
> UPDATE localhost:8080 / api / my-service / 4(更新请求的资源,包含正文中的数据)
> DELETE localhost:8080 / api / my-service / 5(删除具有指定ID的资源)

我设法创建了嵌套路径,但是只有GET用于获取集合(项目符号点中的第一个示例)才返回结果.返回路径中具有id的示例GET无法找到所请求的资源.我尝试了很多不同的变化,但似乎没有任何效果.

以下是我的路线的摘录:

val routes = {
    logRequestResult("my-service-api") {
        pathPrefix("api") {
            path("my-service") {
                get {
                    pathEndOrSingleSlash {
                        complete("end of the story")
                    } ~
                    pathPrefix(IntNumber) { id =>
                        complete("Id: %d".format(id))
                    }
                } ~
                (post & pathEndOrSingleSlash & entity(as[MyResource])) { myResourceBody =>
                    // do something ...
                }
            }
        }
    }
}

我已经在网上检查了很多解决方案,并从Akka本身进行了一些测试,但不知怎的,我在这里遗漏了一些东西.

解决方法

我找到了解决方案.问题出在路径(“我的服务”)部分.我已将其更改为pathPrefix(“my-service”),现在两条GET路径都正常工作.

所以正确的路由设置看起来应该是这样的.

val routes = {
    logRequestResult("my-service-api") {
        pathPrefix("api") {
            pathPrefix("my-service") {
                get {
                    pathEndOrSingleSlash {
                        complete("end of the story")
                    } ~
                    pathPrefix(IntNumber) { id =>
                        complete("Id: %d".format(id))
                    }
                } ~
                (post & pathEndOrSingleSlash & entity(as[MyResource])) { myResourceBody =>
                    // do something ...
                }
            }
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读