问题标签 [scotty]
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.
haskell - 每个处理程序阅读器的 Scotty monad 转换器
在问题Web,Scotty:connection pool as monad reader中,展示了如何使用ScottyT
将Reader
monad 嵌入堆栈以访问静态配置(在这种情况下为连接池)。
我有一个类似的问题,但更简单——或者至少我是这么认为的……</p>
我想将 a 添加Reader
到单个处理程序(即 a ActionT
),而不是整个应用程序。
我从上面的问题开始修改程序,但我不知道如何将 anActionT Text (ReaderT String IO)
变成ActionT Text IO
需要的处理程序。在摸索并尝试使用打字孔希望了解如何构建它之后,我现在不得不放弃并寻求帮助。我真的觉得这应该很简单,但无法弄清楚如何做到这一点。
这是程序,我卡住的行突出显示:
haskell - Haskell Scotty Webserver 发送文本响应
我收到一个 GET 请求并想发送一条短信作为对它的响应。我有以下代码,但收到以下错误
我尝试运行服务器时遇到的错误是
haskell - 在 Haskell 中动态导入模块
我正在构建一个基于 Scotty 的应用程序,并且正在尝试导入和添加目录中包含的动态中间件列表。
我不想硬编码我的中间件列表 - 但到目前为止,我正在使用一个Index.hs
公开所有目录中间件的。
假设我有一个Main.hs
然后在Controllers/Index.hs
:
每个都Controllers/*.hs
包含一个中间件。
摆脱的最好方法是Controllers/Index.hs
什么?有没有办法从目录中导入所有模块并获取我可以使用的列表?
haskell - 如何在 Scotty 或 Yesod 中打开单独的套接字连接?
我正在构建一个必须连接到 IRC 网络(打开套接字)并托管 Web 应用程序的应用程序。一些数据应该在 IRC 部分和 Http 部分之间共享。在 Haskell 中实现这种并发的最佳方法是什么?应该Control.Monad.STM
用这个来实现吗?这是 web 框架也应该支持的东西,还是可以在启动 Scotty 之前分叉?
haskell - 在 Scotty / Haskell 中捕获异常
我刚刚开始学习 Haskell,并且一直坚持如何在 Scotty 中处理异常。
我有下面的基本功能。它获取 JSON POST,将其转换为 Haskell 数据记录,从配置读取器获取 postgres 连接池,然后将记录插入数据库。
此函数编译正常,但是当我将 UniqueViolation 更改为返回文本时,它无法编译。
给出的编译错误是:
catchViolation来自Database.PostgreSQL.Simple.Errors并具有以下签名:
我知道问题的一部分是它从 PgSQL.execute 获取 IO Int64,但从捕手获取 ActionT 但不确定如何解决类型或更惯用的方法。
haskell - 将嵌套子目录与 Scotty RoutePattern 匹配
我正在使用我的 Scotty 网络服务器提供一些静态文件。它们也可以位于子目录中。我目前的方法如下所示:
是否有可能仅使用一种模式来匹配具有不同目录嵌套深度的路径?
haskell - 在 Scotty 编译时动态添加路由
是否可以使用 Template Haskell 或任何其他方式在编译时通过配置文件动态添加路由。
Scotty 有一个函数addRoute但我想动态使用它。
例子
我想遍历 sampleRoutes 数组并在编译时定义路由和响应。
haskell - 使用 Scotty 的网络 I/O 吞吐量出乎意料地低
我尝试对 Scotty 进行基准测试以测试网络 I/O 效率和整体吞吐量。
为此,我设置了两个用 Haskell 编写的本地服务器。一个什么都不做,只是充当 API 的一种。
相同的代码是
我写了另一个服务器,它调用这个服务器并返回响应。
在这两个服务器运行的情况下,我执行了wrk基准测试并获得了极高的吞吐量。
虽然这明显高于 Phoenix 等其他 Web 服务器,但我意识到这没有任何意义,因为大多数响应是由于文件描述符耗尽而发生的 500 错误。
我检查了非常低的限制。
我将这些限制增加到
我再次运行 wrk,这一次显然吞吐量已大大降低。
尽管 500 个错误的数量减少了,但它们并没有被消除。我对Gin和 Phoenix 进行了基准测试,它们比Scotty
不给出任何 500 个响应的情况要好得多。
我错过了什么拼图?我怀疑有一个我无法调试的问题。
我知道http-conduit与这些错误有很大关系,http-client
图书馆在后台使用它,这与Scotty
.
json - 将 BSON 转换为 JSON 并作为 API 响应发送 Haskell
我正在开发我的第一个 Haskell Web 应用程序,并且无法将 BSON 文档转换为 JSON,然后将其作为 API 响应发送。我目前正在使用该AesonBson
包将我的 BSON 转换为 Aeson Object
,但无法弄清楚如何将该 AesonObject
作为 JSON API 响应发送。
这是我的服务器中路由处理程序的示例:
这些看起来应该很简单 -getAllDocuments
返回IO [Document]
,然后我映射aesonfy
到我的文档列表,然后尝试将它们作为 JSON 服务器响应返回。
问题是我不断收到此No instance for ToJSON
错误:
知道我缺少什么吗?看起来aesonify
返回一个 Aeson Object
......那不应该是一个实例ToJSON
吗?任何帮助将不胜感激,我已经在这个上旋转了一段时间了。我试过将 Aeson 的object
功能放在不同的地方,手动添加文档作为 的实例ToJSON
,但实在想不通。