问题标签 [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 / WAI 中完全发送响应后如何运行操作
根据 GET 请求,我的 Scotty webapp 将运行一些计算并将其结果存储在一个临时文件中,它使用file
.
现在我想在文件发送后进行一些清理(即删除临时文件) 。Scotty 似乎没有包含这样做的方法。
WAI 中是否有任何功能可以实现这一点?
haskell - 使用 Scotty,我如何将 ScottyM 与自定义 monad 与 ScottyT 结合起来
如何定义一个函数,例如:
发布它以防万一有人已经有了解决方案,否则我只会弄清楚这一点。不幸的是ScottyT
/ActionT
不是一个单子变压器,所以我不能只做通常的提升。
这样做的全部原因是,我现在需要一个用于我的应用程序的数据库池,但我不想费心在任何地方更改AppServer
类型,然后在所有地方提升。可能只是结合和混合AppServer
更快AppServerNew
。
类型检查的初始解决方案 - 但似乎无法正常工作,因为所有“处理程序”都以 404 响应:
haskell - 为什么异常处理程序没有捕捉到模式匹配失败?
excToStr
为什么在这种情况下我的异常处理程序没有捕捉到模式匹配失败?
我有一个在Scotty Web 框架控制下的传入 POST 请求的处理程序:
我的在哪里excToStr
,它看起来像:
catchAnyDeep
来自安全异常库。我也尝试了其他功能(catchAny
, handle
,catch
等) - 没有成功。问题的症结在于,当传入的正文无法成功解码(并decode
返回Nothing
而不是返回Just x
)时,模式匹配失败,所以我希望我的extToStr
(即excH
)会处理它,因为catchAnyDeep
(和catchAny
)处理任何异常(包括模式-匹配失败,对吧?):
catchAny :: MonadCatch m => m a -> (SomeException -> m a) -> m a
和
catchAnyDeep :: (MonadCatch m, MonadIO m, NFData a) => m a -> (SomeException -> m a) -> m a
.
如果我只抛出一个异常,throwString
那么它会按预期工作(异常被捕获)。但是模式匹配失败会导致 HTTP 内部错误 500,并显示消息“在 do 表达式中的模式匹配失败 ....”。如何处理模式匹配异常?
haskell - 如何使`co-log`的`withLog`与`Scotty`一起工作?
我已经在Reddit上询问过,但想向更广泛的圈子寻求帮助。
这是一个包含代码的存储库,您可以为最小的测试用例运行它:https ://github.com/cideM/co_log_issue
如果你跑步stack build
,你会得到:
而且我不知道如何编写这个实例。
我正在尝试比较co-log
和Katip
。我有一个 Scotty 路由处理程序(更准确地说,它是处理程序的包装器)并且在该处理程序内部,我想在我的应用程序环境中修改日志操作。这里的用例是添加到记录器的上下文中,以便所有后续的日志操作都自动附加一个字符串或类似的东西。
这是处理程序的相关部分:
该withLog
函数会导致错误:
这是有道理的,因为do
之后块中的所有内容withLog
都是Scotty.ActionT TL.Text m()
并且我无法在同一范围内提升它。我有一个类似的问题katip
。
由于 GHC 错误,我无法派生实例:
即使没有那个错误,我也不确定它是否可以推导出来。我试图只使用转储的派生实例(即使生成的代码没有编译)但我最终无法让它工作:
给我
哪个不见了
我无法推导出
我没主意了。
haskell - Haskell Scotty 'Home.main' 应用于太少的参数
我需要使用 Haskell 的 Scotty 启动我非常简单的 web 应用程序,但我似乎无法让 IO () ReaderT 的东西正常工作。我是基于我在网上找到的另一个例子,对 Monads 和 Haskell 整体来说还是很陌生的。
我的 IDE 抛出此错误:
它也在扔这个,但我认为一旦我修复了另一个,它就应该得到修复
我把需要的代码留在这里,如果还有什么我应该展示的,请告诉我。在“Main.hs”中:
在“Postgres.hs”中
这是我的“Home.hs”:
authentication - 如何将基本身份验证添加到 Scotty 中间件?
我目前正在制作一个 Scotty API,但找不到任何 basicAuth 实现示例(Wai Middleware HttpAuth)。
具体来说,我想将基本身份验证标头(用户、密码)添加到我的一些端点(即以“admin”开头的端点)。我已经设置好了所有东西,但我似乎无法区分哪些端点需要身份验证,哪些不需要。我知道我需要使用这样的东西,但它使用 Yesod,我无法将它翻译成 Scotty。
到目前为止,我有这个:
但它为我的所有请求添加了身份验证。我只需要其中一些。
太感谢了!
postgresql - 如何使用 postgresql simple (Haskell) 插入数组?
我正在使用 Scotty 和 PostgreSQL-simple 开发 Haskell API。我无法弄清楚如何插入包含文本数组的列。到目前为止,我的查询已经奏效,但是关于这个的一些问题似乎编译得不好。
这就是我所拥有的:
我的 OrderIntent 及其 FromRow 是:
我得到的错误是:
我不知道如何使用 PostgreSQL 库来解析文本数组,以便可以将我插入到数据库中。如果你们中的任何人可以帮助我,我将不胜感激!
PS:如果你碰巧知道 Scotty auth,我也有几天前的另一个拦截器。
haskell - Haskell Monads 和 liftIO 我不明白
您好社区感谢您的时间。
我有一个错误,我不确定错误是什么,但我认为问题是:从ext-1.2.4.1:Data.Text.Internal.Lazy.Text IO)
to没有 IO 转换器Web.Scotty.Internal.Types.ScottyT
。
但我想知道为什么编译器与ext-1.2.4.1:Data.Text.Internal.Lazy.Text IO)
. 这就是为什么我只使用 String 并且我删除了所有出现{-# LANGUAGE OverloadedStrings #-}
但仍然得到错误的原因。另一方面,这应该是IO [String]
,不是吗?正如你可以提到的,我真的不知道是什么ext-1.2.4.1:Data.Text.Internal.Lazy.Text IO)
。
在另一个地方,我已经liftIO
成功地使用了一个a -> IO String
功能。我想我以同样的方式使用它们。
我想我慢慢地对什么是单子有了感觉,但不太确定。我真的不知道为什么我必须使用一个lift
函数。
错误信息:
发生错误的地方:
haskell - 如何测试 Scotty 端点
使用以下Scotty端点:
例如,如何myendpoint
使用不同的可能输入进行测试
我很想在另一个线程中简单地运行 API,然后使用一些 JSON 查询端点,但是有没有更简洁的方法来做到这一点?(尽管上述的好处是真正的端到端测试)
haskell - 在 pubSub 回调之外使用 Redis.Message
在Hedis 的文档中,给出了使用该pubSub
函数的示例:
鉴于pubSub
返回 a ,是否可以从回调外部在代码中进一步Redis ()
重用此消息?msg
我pubSub
从一个在 monad 中运行的 Scotty 端点打电话ScottyM
,应该返回(长话短说)json msg
或者,有没有办法json
在回调中使用 Scotty's?到目前为止,我还无法做到这一点。