问题标签 [rust-warp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3053 浏览

rust - 如何使用 Warp 检查授权标头?

我正在用 Rust 和 Warp 构建一个 graphql api。我查看了文档,但我仍然没有弄清楚如何链接过滤器,特别是检查authorization请求标头。

这是我的部分代码。它工作正常,但有一个问题。我用 设置了一条路由context_extractor.and(warp::header::<String>("authorization")然后它拒绝所有不包含authorization在标头中的请求。

我该怎么做

  1. 如果请求标头有一个authorizationin 标头,则返回Context正确的user_id

  2. Context如果没有,返回user_id: 0?

0 投票
1 回答
373 浏览

rust - 如何在 Warp 中创建可变路径?

我试图在 Warp 中有一个可变路径。我试过这个:

但我得到了错误:

让路径参数具有'static生命周期的最佳方法是什么?

0 投票
1 回答
2852 浏览

web-applications - 在 rust 中使用 warp 服务静态文件

我正在使用warp库来制作一个生锈的网络应用程序。我正在尝试提供静态文件。我已经从Doc阅读了它的文档。

这是我的代码片段

但是当我访问路径localhost:3030/static/index.js时,它会返回404响应

这是文件树

0 投票
1 回答
512 浏览

rust - 我们如何在 warp 中重定向到外部 URL?

我想重定向到一个外部 URL,比如https://www.google.com,但warp::redirect只需要一个 URI 而不是一个 URL。

0 投票
1 回答
1351 浏览

rust - 使用 Warp 的 and_then 时未实现未来特征

我正在尝试将 HTTPS 强制添加到 GKE 上基于 Warp 的 Web 应用程序中。

GKE 平台大多是无关紧要的;最重要的细节是负载均衡器终止 SSL/TLS 连接,因此X-Forwarded-Proto标题中提供了“真实”方案。Warp 解析的文字方案将始终为HTTP.

逻辑如下:

  1. 如果方案是HTTPS,则正常处理请求。
  2. 如果方案是,则向等效URLHTTP发送 301 重定向。HTTPS
  3. 如果该方案是其他任何内容,请发送 421(错误定向请求)错误。
  4. 如果X-Forwarded-Proto标头丢失(或发生任何其他实际不可能的情况),则发送 400(错误请求)错误。

此示例中的错误响应没有正文内容,所有 HTTPS 请求都应以 text 响应Hello, world!

问题:

显然我在这里遗漏了一些明显的东西,所以我希望有人能把我推向正确的方向!

0 投票
1 回答
1590 浏览

rust - 有没有办法在 Warp 中作为过滤器的一部分进行验证?

我定义了一个路由和一个端点函数。我还注入了一些依赖项。

这一切似乎都很好。

但是,我希望能够在几个端点前面有一些东西来检查查询参数中的有效键。在里面handler1我可以添加:

我不想将它单独添加到每个处理程序中。

似乎我应该能够通过 来做到这一点filter,但我无法弄清楚。我尝试过使用.map(),但返回多个项目会将其转换为一个元组,我必须更改我的下游函数签名。理想情况下,我想找到一种方法来添加验证或其他过滤器,这些过滤器可以在没有任何下游值知道它们的情况下拒绝请求。

0 投票
1 回答
1145 浏览

rust - Rust Warp 中的依赖注入

如何将依赖项注入 Warp 中的路由处理程序?一个简单的例子如下。我有一个路由,我想提供一个在启动时确定的静态值,但过滤器是将值传递给最终处理程序的东西。如何在不创建全局变量的情况下传递其他数据?这对于依赖注入很有用。

0 投票
2 回答
3323 浏览

http - 如何同时使用 Rejection 和问号运算符来处理 Warp 中的错误?

使用warp.rs 0.2.2,让我们考虑一个基本的 Web 服务,它有一个路由GET /

我的目标是?用于路由处理程序中的错误处理,所以让我们编写一个可以错误并提前返回的程序crate::routes

这个版本有效。这里返回的错误Url::parse()url::ParseError

为了在错误类型之间进行转换,从url::ParseErrorto ServiceError,然后从ServiceErrorto warp::Rejection,我写了一些错误助手crate::errors


现在,上述方法有效,我正在尝试缩短第二个代码块以?直接用于错误处理,并自动从底层错误(此处url::ParseError)转换为warp::Rejection. 这是我尝试过的:

url::ParseError返回的将Url::Parse很好地转换为 ServiceError 以返回,但从我的处理程序返回 ServiceError 不起作用。我得到的第一个编译错误是:

有没有一种方法可以保持简短的错误处理?只使用和:

  • ServiceError实施warp::reject::sealed::CombineRejection<warp::reject::Rejection>?_
  • 解决这个问题?
0 投票
1 回答
1198 浏览

rust - 有没有更简单的方法来创建自定义过滤器方法来调用 Warp 处理程序?

而不是写这样的东西:

我希望能够写:

-> ->事情handle在哪里。and_thenmap_errboxed

现在我为每个 arity 处理程序使用一组特征。这是 2-arity 处理程序:

你可以在 Rust 中做到这一点真是太棒了,但有没有更简单的方法来实现这一点?

0 投票
1 回答
1951 浏览

logging - 如何在warp中记录请求/响应主体?

我正在尝试在 warp 中记录请求/响应主体。

使用warp::log::custom时,Info结构不包含任何有关它的信息。

在尝试实现我自己的日志包装器时,基于 的实现warp::log,该Route结构是私有的(除其他外)。

我可以在使用反序列化后记录正文

但是,如果用户没有发送正确的正文,它将无法正常工作。此外,我正在寻找一种简单的方法来记录所有请求正文。