微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

资源正则表达式导致恐慌

如何解决资源正则表达式导致恐慌

  1. 这段代码试图用一个用 rust 编写的服务替换一个已经在生产中运行的服务,用 Java 编写。
  2. 此服务将作为 redis 集群的 sidecar 代理,公开 api rest。它需要保持与当前 api 的兼容性。

路线是:

"/api/keys/{path:*}" 

在path中我们可以放redis的key的名称,可以包含以下任意格式:

/api/keys/users/41728391
/api/keys/users/1000/followers
/api/keys/users/{1234}/data

这是我的尝试

 HttpServer::new(move || App::new()
        .data(redis_config)
        .service(
            web::resource("/set/{path:*}").route(web::put().to(set_key))
        ) ).bind(("127.0.0.1",8080))?
        .run()
        .await

我也这样试过:

#[get("/set/{path:*}")]...

但在两种情况下我会收到此错误

  .service(web::resource("/set/{path:*}").route(web::put().to(path_regex)))
   |                                                                         ^^^^^^^^^^ the trait `Factory<_,_,_>` is not implemented for `path_regex`



thread 'thread 'actix-rt:worker:1actix-rt:worker:0' panicked at '' panicked at 'Wrong path pattern: "/set/{path:*}" regex parse error:
    ^/set/(?P<path>*)$
                   ^
error: repetition operator missing expressionWrong path pattern: "/set/{path:*}" regex parse error:
    ^/set/(?P<path>*)$
               ^

我已阅读https://actix.rs/actix-web/actix_web/web/fn.resource.html

我的代码是:https://github.com/rogeriob2br/enge-sidecar-redis

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。