问题标签 [dart-shelf]

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 回答
261 浏览

asynchronous - 如何取消/中止 Dart 中的区域?

我有一个 http web 服务器,我正在尝试检测长时间运行的请求并中止它们。以下代码在超时后成功返回客户端,但异步区域仍继续运行完成。我怎样才能真正杀死请求处理程序?

0 投票
1 回答
150 浏览

dart - Server response with output from Future Object

i created a async/await function in another file thus its handler is returning a Future Object. Now i can't understand how to give response to client with content of that Future Object in Dart. I am using basic dart server with shelf package.Below is code where ht.handler('list') returns a Future Object and i want to send that string to client as response. But i am getting internal server error.

0 投票
1 回答
165 浏览

json - 为什么从请求而不是直接字符串读取时json解析失败

我正在尝试使用Shelf 包和json_serializable处理 JSON 的一些代码。我有 2 个类和一个处理程序方法,如下所示(省略了错误处理)。

我遇到的并且我真的不太明白的问题是,每当这个端点被击中时,我都会不断收到以下错误。

在尝试诊断错误时,我将 打印parsedJson到控制台并直接粘贴到处理程序中,以尝试找出使用解析数据时 JSON 解析失败的原因,如下所示,并且它没有任何问题地工作。

我真的很困惑为什么会发生这种情况。我认为打印到控制台并在上面的示例中使用的 JSON 字符串与从请求中读取的内容完全相同,那么为什么 JSON 解析会抛出请求数据的错误而不是完全相同的字符串?

更新:

我能找到让它工作的唯一方法是使用下面的代码(这对我来说真的毫无意义)。

我认为由于这些是嵌套类,因此出于某种原因需要对它们中的每一个调用 jsonDecode,因此我尝试将此代码添加到生成的反序列化代码中。

但这没有成功。我可以看到第一个 jsonDecode 调用返回动态,这解决了问题。

总的来说,我对这种行为感到非常困惑。为什么我不能简单地将 String 转换为 dynamic 或 Map ?更好的是,我为什么要这样做?jsonDecode 返回动态。此外,当我使用原始字符串时,甚至没有发生这些问题。

更新 2;

现在更加困惑的是,我试图至少将似乎需要的 2 个 json 调用抽象为一个名为 decode 的函数,如下所示。

现在我得到这个错误

我 100% 确定我在这里做错了什么,或者只是不明白。我不确定那是什么。

0 投票
1 回答
655 浏览

dart - Dart 架子 - 中间件和处理程序执行顺序

我在试图理解 Dart 架子如何执行中间件和处理程序时迷失了方向。从我读过的所有文档(并简要介绍)中,如果您编写一个返回 null 的中间件,那么执行将沿着管道进行。否则,如果中间件返回一个响应,则停止沿管道的执行,并将响应返回给调用者。

我有一个带有这样简单管道的服务器:

auth 中间件检查 3 种情况:注册、登录和验证。

  • 注册 -> 创建新用户并返回 Response.ok(token),否则返回 Response.InternalServerError
  • 登录 -> 刷新令牌并返回 Response.ok(token),如果不正确则返回 Response(401)
  • 验证 -> 正常时返回 null(应继续沿管道),或响应(403,禁止)

问题是,我无法停止中间件的执行。如果我成功登录,程序仍然会顺流而下并调用路由器。哪个当然没有 register 的路径并按预期返回 404 。

根据架子文档,它应该在中间件返回响应时停止。我到底做错了什么?

这是 auth Middleware 的代码供参考:

0 投票
0 回答
39 浏览

dart - 为什么我的飞镖架 web 服务不能绑定到 0.0.0.0?

我一直在尝试更改此 HTTPServer 的主机名,以便从网络上的任何机器访问它,但是该站点仍然只能通过 localhost 访问。我尝试将“0.0.0.0”主机名字符串解析为 InternetAddress,但这也不起作用。

请原谅代码的幼稚,因为这是我第一次使用飞镖。

编辑:更多信息 - IDE 是 VS Code,Kali linux 在命令行中执行。我的计划是将其容器化并将其部署到 Kubernetes 集群上,仅供参考。

0 投票
0 回答
43 浏览

dart - Dart Shelf 服务器返回空 JSON

我制作了一个小型 Dart Shelf 服务器,它读取一个.csv文件并返回一个JSON. 在本地执行中它运行良好,但是当我在线部署它时,它返回为空。

我使用了csvpub.dev下载的包。

我的一段读取和转换文件的代码:

0 投票
0 回答
149 浏览

http - 飞镖shelf_web_socket与shelf_router给劫持异常

我正在尝试实现一个同时服务于 websockets 和 http 请求的基本服务器。

代码是这样的;

当我尝试连接 ws url 时,我得到了劫持错误。

我找不到解决方法。这个解决方案对我不起作用。

0 投票
1 回答
67 浏览

dart - 如何将记录器传递给飞镖架中的 logRequests?

我正在尝试使用架子上的 logRequests 函数。功能如下:

实现就像:

我在这里调用 logRequests:

它工作得很好,但我想要那个可选的记录器功能,这样我就可以对消息做任何我想做的事情。问题是我似乎无法在这里将函数作为参数传递......我已经搜索了如何将函数作为参数传递,但我得到的只是“位置参数太多:预期为 0,但找到了 1”。

我已经尝试以多种方式定义函数,最后一种(如这里的答案所示是:

并称它为:

这和我尝试过的所有其他事情总是给我上面提到的错误。

那么我怎样才能在这里传递一个函数呢?

谢谢

0 投票
1 回答
67 浏览

dart - 如何将 Dart 服务器部署到 IIS

我想将使用架子的基本 dart 服务器部署到 IIS 服务器。

我运行命令 dart compile exe 并尝试将可执行文件与 web.config 文件一起放在文件系统中。我使用我需要的设置设置了工作池。我有一个 DNS 准备好,它是 mywebsite.reu.po 并为它设置了正确的绑定。它给了我一个关于处理程序的 503 错误。服务器主机名是 localhost,端口是 APSNET_PORT 。如果在该端口中没有找到任何内容,则它会抓取端口 4000。

这是我的 web.config 文件中的内容

0 投票
1 回答
188 浏览

flutter - 如何在 Dart/shelf 中重定向请求?

shelf在 Dart 中使用来设置一个简单的 Web 服务器。在下面的示例中,如何将请求从/to重定向/oauth2callback

我找到了这种方法,但不知何故,即使我导入,我也无法编译代码dart:io