问题标签 [saturn-framework]

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 投票
2 回答
762 浏览

f# - 如何在 F# Saturn 框架中自定义日志记录?

我创建了一个默认的 SAFE 应用程序,如此处所述。删除多余的东西,服务器是这样的:

现在,在运行应用程序时,我在控制台中看到一些日志记录,基本上是传入请求:

如何自定义日志记录?文档尽可能稀缺,没有示例。我需要一些简单的东西,比如记录“将返回 42...”。或者至少有一些案例链接。

0 投票
2 回答
1084 浏览

f# - 如何在 F# Saturn Framework 中获取查询参数?

假设我们有这个 Web 服务器来处理请求:

此语法在文档中进行了描述,并在示例中进行了演示。

现在,如果我想在 url 查询中有一个参数,例如过滤结果怎么办?

这不会做任何事情:

0 投票
1 回答
236 浏览

logging - 如何在 F# Saturn 框架中更改日志级别?

当我运行我的 Saturn 应用程序时,我看到一些日志被写入控制台。

看起来他们以LogLevel.Info. 如何进行更详细的日志记录,即如何正确设置 eg LogLevel.Trace

0 投票
1 回答
429 浏览

asp.net - 使用 F# 和 ASP.NET 启用 CORS

如何使用 F# 和 ASP.NET 启用 CORS。我正在尝试使用 Google 对用户进行身份验证,但在浏览器控制台中出现以下错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://localhost:8080 ”。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

一个可重现的例子在这里https://github.com/sashan/safe-google-auth

它使用 F# 和 SAFE 框架,因此如果您想尝试重现此设置,则需要该设置。

您还需要使用 Google+ API ( https://console.cloud.google.com/apis/library/plus.googleapis.com )设置客户端 ID 和密码

完成后将其添加到您的环境中:

重击:

Windows Powershell:

要构建它,请克隆 repo 并运行

然后单击Auth with Google打开浏览器控制台窗口的按钮以查看错误。

0 投票
1 回答
150 浏览

f# - 如何转换任务序列到 MyType 的序列

所以我目前有一个 type 序列,seq<System.Threading.Tasks.Task<Restaurant>>我想把它变成一个 type 序列seq<Restaurant>

我目前正在使用 TaskBuilder.fs 库,根据我的研究,我需要使用 let!或者做!对于这种情况,但它们需要task {}与 Seq.map 一起使用时带回相同的任务类型。

所以我的结果是类型Seq<Restaurant>,我需要为每家餐厅添加评论,所以我使用 Seq.map 来获取 restaurantWithReviews 这是seq<System.Threading.Tasks.Task<Restaurant>>我无法使用的类型。

0 投票
1 回答
158 浏览

f# - F# Saturn 框架:“get”和“forward”有什么区别?

例如,路由器计算表达式中的以下代码

似乎具有完全相同的效果

在这两种情况下,只要客户端导航到 ,就会显示当前时间/time

在什么情况下这些会有所不同?

0 投票
1 回答
209 浏览

f# - 如何为 Saturn 应用程序构建集成测试

我正在尝试为使用Saturn 框架构建的小型 API 构建一些集成测试。

API 是使用常用的计算表达式构建的,例如Saturn,application等。controllerrouter

但是为了构建集成测试,我需要替换application计算表达式 (ce) 并手工制作WebHostBuilder.

我的applicationce 看起来像这样:

带有一个routercontrollers...

上面的代码在我的 API 项目中,下面带有集成测试的代码在第二个项目中。后者对前者有项目参考。

运行测试时,它会失败并出现以下异常:

问题似乎与线路有关app.UseGiraffe(Server.apiRouter)apiRouter是在 API 项目的模块中定义的Server——但是当这段代码在测试项目中运行时Server.apiRouternull.

但是,如果我将测试代码移动到与 - 测试代码相同的项目中,API则测试工作完美。

如果从测试项目中调用 apiRouter计算表达式,为什么会这样?null

0 投票
1 回答
232 浏览

f# - 如何在 SAFE-Stack 中正确强制使用 HTTPS?

根据土星文档,要在土星中拥有 HSTS,需要在force_ssl以下文件中指定application

这适用于 Web 的已部署版本,但它会破坏本地开发。服务器不会在它写入的日志中返回响应,仅此而已Request redirected to HTTPS

是否可以同时强制 SSL 并保持本地开发方便?

0 投票
1 回答
217 浏览

f# - 使用 acceptJson 时,土星 API 没有响应 GET

acceptJson当 GET 方法是管道的一部分时,F# Saturn Web 框架在检索 GET 方法的值时失败。

下面是我运行以重现该问题的示例代码:

appRouter然后在代码use_router部分添加。application

当我发送带有标头的请求时Content-Type:application/json,响应是“404 not found”。但是,如果我plug acceptJsonapi管道定义中删除,我会得到正确的响应。

如何使土星与plug acceptJson?

0 投票
0 回答
130 浏览

asp.net - 使用 Saturn 框架,我如何在特定请求之外获得对 Websockets 集线器的引用?

我正在为一个玩具问题构建一个应用程序,以了解有关 SAFE 的更多信息。我有一些在服务器端运行的后台进程,有时它们需要向连接的客户端发送不提示的消息。这意味着我需要从任何特定请求之外引用 SocketHub。

目前我有一个可变变量,我在加入频道时将值传递给:

但是,在我看来,应该有更好的方法来访问集线器——我就是想不通。