问题标签 [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 回答
1121 浏览

f# - Suave 中带有可选参数的路由

我有一个带有 hello world 端点的 Web 服务,如下所示:

现在我想添加一个额外的端点,它可以处理这样的路由: http://localhost:8083/hello/{name}?lang={lang}

此路由应适用于以下 URL:

但它不应该适用于

http://localhost:8083/hello/FooBar/en-GB

可选参数应该只允许在查询参数字符串中而不是在路径中。

知道如何使用 Suave 实现这一目标吗?

0 投票
2 回答
487 浏览

.net - Reload Suave App on File Save

I've recently started with Suave; I setup a project using yeoman and the F# generator. To run the app, I build an executable using Fake and then run it. Whenever I change any of the app files, i.e. *.fs files, I have to repeat the process of building and running an executable.

Is there a better process for development, wherein the app rebuilds or reloads/restarts on file save?

0 投票
1 回答
125 浏览

.net - 在 F#(微)服务中嵌入数据

我正在尝试创建一个基于 F# + Suave 的微服务,它接受一个请求并使用一些矩阵和查找表来计算响应。该服务必须在 Linux 上的 docker 容器中运行(单声道后来的 CoreCLR)。

这些矩阵和查找表有 1000 到 100 万个元素(通常是浮点数),并使用各种 IPython 笔记本(Pandas DataFrames)离线生成。

是否可以将这些矩阵以二进制格式嵌入服务中,如果可以,最好的做法是什么?

到目前为止,我研究了 resgen,但它似乎主要集中在本地化问题上。我也在考虑将 Pandas DataFrame 导出为 CSV,然后创建一个脚本将它们转换为二进制数据。但是我如何将这些二进制文件嵌入到我的 F#/Suave 服务中呢?还是有更好的方法?

0 投票
1 回答
45 浏览

suave - 模块,Suave 中的可安装路由处理程序?

作为Express.js中的路由器,在 Suave 中拥有可挂载路由处理程序的推荐方法是什么?

在高层次上,我想要实现的是一种使用相对路径定义我的路由并将它们安装在父路径下的方法。例如,我想编写一个带有路径处理程序的 REST API:

然后将它们安装在版本 1 路径下v1,以便可以通过以下方式访问它们:

在 express.js 中,我可以使用以下代码执行此操作。如何在 Suave 中实现功能相似的功能?我了解 Suave 以完全不同的方式解决问题,但只是想知道 Suave 采用什么方法以模块化方式解决此问题。

0 投票
2 回答
202 浏览

.net - 如何在 F# Suave 中路由 /store/category/%s/brand/%s?

我不知道如何为如下路径设置路由器:

我有网上商店演示,它适用于简单的 URL,但我看不出如何进行更灵活的配置。

这就是我所拥有的:

0 投票
2 回答
326 浏览

f# - Xamarin Studio 中的错误消息:不允许多次引用 FSharp.Core.dll

当我在 Xamarin Studio 中设置一个引用 Suave 的新 F# 项目时,出现错误。

以下是重现错误消息的步骤:

  1. 在 Xamarin Studio 6 中创建一个新的解决方案。类型:F# 中的控制台项目
  2. 添加 Suave nuget 包:Suave 1.1.2
  3. 打开 Program.fs 并在文件顶部添加这一行:'open Suave'

在此之后,“打开”这个词用红色曲线装饰,当我将鼠标指针移到它上面时,会出现一个带有以下消息的小弹出窗口:

为什么会出现此错误消息以及如何删除它?

我注意到的是 Suave nuget 包的安装也导致了 FSharp.Core nuget 包的安装。这是生成的 packages.conf 文件:

0 投票
3 回答
918 浏览

f# - 有没有办法将图像直接传送到温和的响应流?

我想在服务器端动态生成图像并将其发送到浏览器。

目前我正在使用 aMemoryStream将其转换为byte array通常的 suave api。见下图:

如果 suave 允许我们直接通过管道连接到响应流,我觉得这MemoryStream部分可以避免。

谢谢!

0 投票
0 回答
316 浏览

suave - 发布到所有 suave websockets

如何在以下代码示例中向所有 websocket 客户端广播事件:

所以,基本上,我希望能够向服务器 websocket 发送消息,并将该消息回显到所有当前的 websocket 客户端。用例是我有一个文件观察器,它向服务器 websocket 发送消息,浏览器中的 websocket 客户端将在收到消息时刷新浏览器。

我想我需要保留一份客户名单,但我不确定使用 suave 的最佳方法是什么。

例如,使用 express 这很简单:

0 投票
1 回答
534 浏览

f# - 检查传入请求是否包含某个标头值的最简单方法是什么

我有一个简单的 Suave.io 服务器,格式如下:

我想检查请求是否包含具有特定名称和值的标头,并在它不存在或不正确时返回 NotOk。实现这一目标的最简单方法是什么?

我是 Suave.io 作曲风格的新手。

0 投票
1 回答
816 浏览

f# - 无法使用 Suave F# 返回 JSON

我正在关注 suave 教程,我正在努力将 JSON 返回到前端。我目前有代码。(我没有使用 Chiron 包)。我可以很好地启动 Web 服务器,但是当我转到 localhost:8083/hello 时,我收到下面发布的错误消息。我不确定如何进行调试,或者是什么原因造成的。

是我正在关注的教程

派生类必须实现它

System.NotImplementedException:派生类必须在 System.Reflection.Module.GetCustomAttributes (System.Type attributeType, Boolean inherit) <0x104618170 + 0x00010> in :0 at System.Reflection.Emit.ModuleBuilder.GetCustomAttributes (System.Type attributeType,布尔继承)<0x1045f1800 + 0x0001b> 在 System.Runtime.Serialization.DataContract.GetGlobalDataContractNamespace 的 0 处(System.String clrNs,ICustomAttributeProvider customAttribuetProvider)<0x10da40f60 + 0x00045> 在 System.Runtime.Serialization.DataContract.GetDefaultDataContractNamespace 的 0 处(System .Type 类型)<0x10da40e80 + 0x00051> in :0 在 System.Runtime.Serialization.DataContract.GetDCTypeStableName(System.Type 类型,System.Runtime.Serialization.DataContractAttribute dataContractAttribute)<0x10da3fd50 + 0x000f5> in :0 在 System.Runtime.Serialization.DataContract.GetStableName(System.Type 类型,System.Collections.Generic.Dictionary2 previousCollectionTypes, System.Boolean& hasDataContract) <0x10da3f570 + 0x00092> in :0 at System.Runtime.Serialization.DataContract.GetStableName (System.Type type, System.Boolean& hasDataContract) <0x10da3f4f0 + 0x00058> in :0 at System.Runtime.Serialization.ClassDataContract+ClassDataContractCriticalHelper.GetStableNameAndSetHasDataContract (System.Type type) <0x10da3f490 + 0x00031> in :0 at System.Runtime.Serialization.ClassDataContract+ClassDataContractCriticalHelper..ctor (System.Type type) <0x10da3e1e0 + 0x00044> in :0 at System.Runtime.Serialization.ClassDataContract..ctor (System.Type type) <0x10da3e120 + 0x00045> in :0 at System.Runtime.Serialization.DataContract+DataContractCriticalHelper.CreateDataContract (Int32 id, RuntimeTypeHandle typeHandle, System.Type type) <0x10da3ab00 + 0x0031e> in :0 at System.Runtime.Serialization.DataContract+DataContractCriticalHelper.GetDataContractSkipValidation (Int32 id, RuntimeTypeHandle typeHandle, System.Type type) <0x10da3aa50 + 0x0005c> in :0 at System.Runtime.Serialization.DataContract.GetDataContractSkipValidation (Int32 id, RuntimeTypeHandle typeHandle, System.Type type) <0x10da3aa10 + 0x00023> in :0 at System.Runtime.Serialization.DataContract.GetDataContract (Int32 id, RuntimeTypeHandle typeHandle, SerializationMode mode) <0x10da3a9c0 + 0x00025> in :0 at System.Runtime.Serialization.DataContract.GetDataContract (RuntimeTypeHandle typeHandle, System.Type type, SerializationMode mode) <0x10da3a240 + 0x00036> in :0 at System.Runtime.Serialization.DataContract.GetDataContract (System.Type type) <0x10da3a1f0 + 0x0002f> in :0 at System.Runtime.Serialization.Json.DataContractJsonSerializer.get_RootContract () <0x10da3a0f0 + 0x0005b> in :0 at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalIsStartObject (System.Runtime.Serialization.XmlReaderDelegator reader) <0x10da39fa0 + 0x00038> in :0 at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject (System.Runtime.Serialization.XmlReaderDelegator xmlReader, Boolean verifyObjectName) <0x10da39b60 + 0x00046> in :0 at System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject (System.Runtime.Serialization.XmlReaderDelegator reader, Boolean verifyObjectName, System.Runtime.Serialization.DataContractResolver dataContractResolver) <0x10da39b30 + 0x00020> in :0 at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions (System.Runtime.Serialization.XmlReaderDelegator reader, Boolean verifyObjectName, System.Runtime.Serialization.DataContractResolver dataContractResolver) <0x10da39760 + 0x0020f> in :0 at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions (System.Runtime.Serialization.XmlReaderDelegator reader, Boolean verifyObjectName) <0x10da396f0 + 0x00025> in :0 at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject (System.Xml.XmlDictionaryReader reader) <0x10da39480 + 0x0006d> in :0 at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject (System.IO.Stream stream) <0x10da36030 + 0x0005c> in :0 at Suave.Json.fromJson[T] (System.Byte[] bytes) <0x10da35890 + 0x00103> in :0 at Suave.Json+mapJson@31[a,b].Invoke (Suave.HttpRequest r) <0x10da35740 + 0x0004f> in :0 at Microsoft.FSharp.Core.FSharpFunc2[T,TResult].InvokeFast[V] (Microsoft.FSharp.Core.FSharpFunc 2 func, Microsoft.FSharp.Core.T arg1, Microsoft.FSharp.Core.TResult arg2) <0x1052faeb0 + 0x000a1> in :0 at Suave.Json+mapJson@31-2.Invoke (Suave.HttpContext context) <0x10da356f0 + 0x00034> in :0 at Suave.WebPart+bind@14-5[a,b].Invoke (Microsoft.FSharp.Core.FSharpOption1 _arg1) <0x10da331d0 + 0x0004c> 在 :0 在 Microsoft.FSharp.Control.AsyncBuilderImpl+args@835-1[a,b]。调用 (aa) <0x10d4db780 + 0x000af> in :0