问题标签 [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.

0 投票
1 回答
98 浏览

haskell - 在 Scotty / WAI 中完全发送响应后如何运行操作

根据 GET 请求,我的 Scotty webapp 将运行一些计算并将其结果存储在一个临时文件中,它使用file.

现在我想在文件发送进行一些清理(即删除临时文件) 。Scotty 似乎没有包含这样做的方法。

WAI 中是否有任何功能可以实现这一点?

0 投票
0 回答
41 浏览

haskell - 使用 Scotty,我如何将 ScottyM 与自定义 monad 与 ScottyT 结合起来

如何定义一个函数,例如:

发布它以防万一有人已经有了解决方案,否则我只会弄清楚这一点。不幸的是ScottyT/ActionT不是一个单子变压器,所以我不能只做通常的提升。


这样做的全部原因是,我现在需要一个用于我的应用程序的数据库池,但我不想费心在任何地方更改AppServer类型,然后在所有地方提升。可能只是结合和混合AppServer更快AppServerNew

类型检查的初始解决方案 - 但似乎无法正常工作,因为所有“处理程序”都以 404 响应:

0 投票
1 回答
69 浏览

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 表达式中的模式匹配失败 ....”。如何处理模式匹配异常?

0 投票
1 回答
133 浏览

haskell - 如何使`co-log`的`withLog`与`Scotty`一起工作?

我已经在Reddit上询问过,但想向更广泛的圈子寻求帮助。

这是一个包含代码的存储库,您可以为最小的测试用例运行它:https ://github.com/cideM/co_log_issue

如果你跑步stack build,你会得到:

而且我不知道如何编写这个实例。

我正在尝试比较co-logKatip。我有一个 Scotty 路由处理程序(更准确地说,它是处理程序的包装器)并且在该处理程序内部,我想在我的应用程序环境中修改日志操作。这里的用例是添加到记录器的上下文中,以便所有后续的日志操作都自动附加一个字符串或类似的东西。

这是处理程序的相关部分:

withLog函数会导致错误:

这是有道理的,因为do之后块中的所有内容withLog都是Scotty.ActionT TL.Text m()并且我无法在同一范围内提升它。我有一个类似的问题katip

由于 GHC 错误,我无法派生实例:

即使没有那个错误,我也不确定它是否可以推导出来。我试图只使用转储的派生实例(即使生成的代码没有编译)但我最终无法让它工作:

给我

哪个不见了

我无法推导出

我没主意了。

0 投票
1 回答
64 浏览

haskell - Haskell Scotty 'Home.main' 应用于太少的参数

我需要使用 Haskell 的 Scotty 启动我非常简单的 web 应用程序,但我似乎无法让 IO () ReaderT 的东西正常工作。我是基于我在网上找到的另一个例子,对 Monads 和 Haskell 整体来说还是很陌生的。

我的 IDE 抛出此错误:

它也在扔这个,但我认为一旦我修复了另一个,它就应该得到修复

我把需要的代码留在这里,如果还有什么我应该展示的,请告诉我。在“Main.hs”中:

在“Postgres.hs”中

这是我的“Home.hs”:

0 投票
1 回答
209 浏览

authentication - 如何将基本身份验证添加到 Scotty 中间件?

我目前正在制作一个 Scotty API,但找不到任何 basicAuth 实现示例(Wai Middleware HttpAuth)。

具体来说,我想将基本身份验证标头(用户、密码)添加到我的一些端点(即以“admin”开头的端点)。我已经设置好了所有东西,但我似乎无法区分哪些端点需要身份验证,哪些不需要。我知道我需要使用这样的东西但它使用 Yesod,我无法将它翻译成 Scotty。

到目前为止,我有这个:

但它为我的所有请求添加了身份验证。我只需要其中一些。

太感谢了!

0 投票
2 回答
169 浏览

postgresql - 如何使用 postgresql simple (Haskell) 插入数组?

我正在使用 Scotty 和 PostgreSQL-simple 开发 Haskell API。我无法弄清楚如何插入包含文本数组的列。到目前为止,我的查询已经奏效,但是关于这个的一些问题似乎编译得不好。

这就是我所拥有的:

我的 OrderIntent 及其 FromRow 是:

我得到的错误是:

我不知道如何使用 PostgreSQL 库来解析文本数组,以便可以将我插入到数据库中。如果你们中的任何人可以帮助我,我将不胜感激!

PS:如果你碰巧知道 Scotty auth,我也有几天前的另一个拦截器。

0 投票
1 回答
157 浏览

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函数。

错误信息:

发生错误的地方:

0 投票
1 回答
51 浏览

haskell - 如何测试 Scotty 端点

使用以下Scotty端点:

例如,如何myendpoint使用不同的可能输入进行测试

我很想在另一个线程中简单地运行 API,然后使用一些 JSON 查询端点,但是有没有更简洁的方法来做到这一点?(尽管上述的好处是真正的端到端测试)

0 投票
1 回答
192 浏览

haskell - 在 pubSub 回调之外使用 Redis.Message

Hedis 的文档中,给出了使用该pubSub函数的示例:

鉴于pubSub返回 a ,是否可以从回调外部在代码中进一步Redis ()重用此消息?msg

pubSub从一个在 monad 中运行的 Scotty 端点打电话ScottyM,应该返回(长话短说)json msg

或者,有没有办法json在回调中使用 Scotty's?到目前为止,我还无法做到这一点。