问题标签 [suave]

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

f# - 如何使用现有的记录类型创建新的记录类型?

我正在尝试Todo使用 Suave 创建一个简单的 REST API。Todo类型定义为:

这种类型在使用Get By IdGET /todos/{guid}Get ListGET /todos/ API 时非常有效。但是在创建新Todo项目时,有效负载不包含id属性,因为它将作为数据库操作的一部分自动生成。因此,进行了以下 REST API 调用:

但是,问题是 JSON 反序列化中断,因为该id字段不可用。如何处理这种情况?声明idasoption感觉不对,因为它不是正确的抽象。在 TypeScript 中,我可以使用 , 等实用程序类型OmitPick创建新类型,例如:

如何在 F# 中获得类似的结果?

0 投票
1 回答
80 浏览

f# - 使用 Suave 将请求转发到另一台服务器的 WebPart?

我想创建一个WebPart将所有请求转发到我指定的另一个 Web 服务器。

用法可能如下所示:

我应该如何在 Suave 中实现这一点?


我找到了这个片段,但它似乎适用于旧版本的 Suave:

0 投票
0 回答
59 浏览

.net-core - Suave.io 是否使用单线程处理请求?

我知道Suave.io它是非阻塞的,但它是否使用像 Node.js 这样的单线程?它是否类似于此处解释的 Kestrel - Kestrel 是否使用单线程来处理 Node.js 之类的请求??

作为上下文,我正在尝试使用Suaveand为 GraphQL 构建数据加载器FSharp.Data.GraphQL。要执行批处理和自动调度,我需要构建一个基于时钟的批处理队列。

0 投票
1 回答
343 浏览

rest - Suave with f# - 如何在 f# 聊天应用程序中有一个 rest api 和 websocket 端口?

我有一个 f# 聊天应用程序,该应用程序需要暴露其余 api 以及用于实时消息传递的 websockets。我正在使用 Suave 框架。

我有一个前端,它有一个“聊天”按钮,点击时运行 javascript。javascript 触发为 websocket url (/websocket) 创建一个 web socket,并为实时聊天建立连接。但是,我有另一个按钮“FetchUsers”用于获取系统中的所有用户。但为此,我需要一条不同的路径(/people)。我不认为我可以使用 (/websocket) 路径,因为在后端,只有一个函数可以为特定路径定义。

为了实现这一点,我提出了可以公开 2 个不同端口的想法:一个用于其余 api,一个用于 Web 套接字。我的 rest api (localhost:8082/people) 用于获取系统中的所有用户,而 web sockets (localhost:8080/websocket) 用于向系统中的所有用户发送聊天消息

对于如何实现聊天应用程序,我愿意接受任何其他建议。

程序.fs

宁静的.fs

如何将 websocket 分配到端口 8080 并将 api 分配到端口 8082?我现在正在这样做。服务器在端口上启动,但我只能访问其余的 url,即 localhost:8080/people

重申我之前的观点,我想知道关于如何实现聊天应用程序的任何其他方法。

0 投票
0 回答
64 浏览

f# - 使用 Suave 上传大文件?

我想使用 Suave 上传文件。我知道小文件会自动写入/tmp文件夹,但我的文件太大了。我想做的是将它们作为处理并通过 Suave 服务器将它们发送到长期存储。

这是我的服务器:

但是当我运行这个curl命令时,它只是挂起:

我希望上传的文件能够逐行打印。

我在这里想念什么?

0 投票
1 回答
56 浏览

sql - Suave 是否包含用于数据库的工具?

在 Suave 中是否有访问数据库的内置方法?

0 投票
1 回答
81 浏览

f# - 带有 Suave 和 Fable.Remoting 的 MissingMethodException

是一个可以重现该问题的最小示例。

尝试使用 Fable 客户端或只是导航到http://127.0.0.1:8080/ITestAPI/Test来访问该端点会导致服务器抛出未找到的方法:

我已经为此打了几天的头,没有任何进展。使用 .Net Core 3.1 和 .Net 5 都会发生同样的错误。

任何人都对可能导致这种情况的原因有任何见解?我没有看到有关 Fable.Remoting 或 Suave 的任何未解决问题,所以我不得不想象这是我做错了什么?

0 投票
1 回答
33 浏览

f# - 如何设置 Suave 以访问任何路由上的帖子消息,并绑定到“*”

我需要设置一个服务,该服务需要接受 POST 消息到该 IP 上的任何路由,并让 Web 服务器监听机器拥有的所有 IP

我可以很容易地制作一个本地 IP 列表,将 127.0.0.1 添加到其中进行测试。

如何在任何发布请求上设置回调,包括内容?我在 1 小时前才开始研究它,所以答案可能很明显。

0 投票
1 回答
38 浏览

f# - Suave Web 服务器的表单数据不正确

我正在尝试从 AWS 的 SNS 系统接收确认。它通过 POST 向网络服务器发送一条消息,我正在使用 Suave 接收它。

当我收到消息时,表单字段被截断,我收到:

所以这是一个未完成的json...

但是当我查看rawForm字段时,我得到了整个信息:

起初我以为输出被截断了,但后来我缩小了范围。发布这一行:

将失败并在第一个“=”符号处被截断。然后:

将导致 Suave 失败。当作为表单数据发送时,它不会被正确地转换为字符串。

是否有任何与编码等相关的设置可以防止这种情况发生?(因为我不能要求 AWS 逃避他们所有的 '=' 标志)

0 投票
1 回答
32 浏览

asynchronous - 在 F# 中的异步块中返回位置

我有以下代码:

它使用的是 Suave Web 服务器,两个路径(正常和错误)都返回WebPart类型的对象。

如果我尝试移动 return 语句来包装其他所有内容,我会得到以下代码:

try/with 块应该返回一个 WebPart 对象,我认为用一个返回来包装它会更好读。

编译器不同意:

[FS0750] 此构造只能在计算表达式中使用

我不明白为什么会这样。谁能给我解释一下?