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

haskell - 斯科蒂网络服务

我需要使用 Haskell 中的scotty web 框架创建一个 web 服务来在不同的货币之间进行转换。

Web 服务应响应获取请求,例如 /convert/15?to=usd&from=eur。

到目前为止我有这个代码:

因此,当您在浏览器中执行:http://localhost:3000/Tony 时,结果是:嗨,Tony,怎么了!

问题是我不知道如何更改代码以获得'/convert/15?to=usd&from=eur.' 作为请求并得到正确的答案。

希望任何人都可以帮助我。

提前致谢。

用最终解决方案编辑:

0 投票
1 回答
128 浏览

haskell - 如何使用带有 Intellij(Haskell 插件)的 scotty 登录到终端?

所以我发生了一些奇怪的事情。这是一个说明性的代码示例:

每当我输入“localhost:8000/”时,我的消息都应该打印到 IntelliJ 控制台,但事实并非如此。然而,当我评论 scotty 的东西时,只有:

IntelliJ 打印出来没有问题。我究竟做错了什么?当我使用 Windows 命令提示符运行可执行文件(例如 ghc --make 创建它,然后运行它)时,一切正常 - “我即将提供请求!” 每次我输入“localhost:8000/”时都会打印到命令提示符终端

0 投票
1 回答
69 浏览

haskell - 使用 Scotty 检索 HTTP 引荐来源网址

$_SERVER[HTTP_REFERER]允许在 PHP 中检索引用 URL,如何在 Haskell 中执行相同的操作?

0 投票
1 回答
168 浏览

haskell - 在 Scotty 服务器中分叉新线程

我在 Scotty 使用两个 API 对 Web 服务器进行原型设计:

  • /add/:id使用给定的 ID 启动一个 asyc 任务。
  • /cancel/:id杀死给定 ID 的任务。

基本上,客户端通过提供一些 ID 来启动异步任务,也可以通过 ID 终止当前任务。

Control.Concurrent.forkIO用来启动一个线程,forkIO返回一个ThreadId我存储在 Scotty 全局状态中的 Map: type AppState = Map TaskId ThreadId

/add/:id不会立即返回,而是等待任务完成并将结果返回给客户端。

我的问题是forkIOMonadIO m => ActionT Text m (). 我需要能够在我通过text :: Text -> ActionT Text m ()的操作完成后调用。IO ()forkIO

这需要从那显然MonadIO mIO一个错误,但我无法解决它并找到任何解决方案。

这是完整的例子:

0 投票
1 回答
209 浏览

haskell - 如何使用 Scotty 在前端显示来自 HTTP GET 请求的响应?

我是第一次尝试 Scotty,但我似乎无法摆脱我的 GET 请求。响应作为类型返回

我知道我需要将它转换为 Scotty 可以输出的类型,但我不知道该怎么做。

我的完整代码是:

我尝试使用 LiftIO,但这仍然给我一个类型错误。我想知道我应该如何准确地转换我的响应,以便我可以在前端显示它,就像我用 html 显示我的初始“Hello World”一样。

0 投票
1 回答
70 浏览

sqlite - 与 Scotty 和 Sqlite 一起工作,但在 Monads 上遇到了一些麻烦

嗨,我是 Haskell 的新手,我一直在使用 Scotty 和 Sqlite 开发一个小型 Web 应用程序。

我在 Scotty Actions 中执行 Sqlite 操作时遇到问题。当单独使用这两个库时,我有点理解。

这是我的代码的 MVP

因此,正如您所看到的,我仍然过于迫切地思考。我知道帖子的类型是 ActionM () -> ScottyM () 并且我知道关闭数据库的类型是 IO ()

所以我认为我需要的是一个复合函数,它是 ActionM () -> IO () -> ScottyM () 我只是不知道如何写这个。

这是在正确的轨道上吗?

非常感谢任何和所有建议。

0 投票
1 回答
231 浏览

haskell - haskell webframeworks 速度,GHCi vs Compiled

今天我在本地机器上做了一些基准测试来比较不同 Haskell Web 框架的纯文本速度,我发现了一些奇怪的东西。与编译版本相比,我测试的几乎所有框架在从 GHCi 运行时都表现得更好。这是我的结果

我知道这些数字并不能反映这些框架的速度,因为它们没有得到很好的调整或优化,但我的问题是为什么这些框架从 GHCi 启动时性能更好。难道我做错了什么 ?

为了构建它们,我只需运行stack build

0 投票
1 回答
287 浏览

rest - 如何将所有请求(全部捕获)与 Haskell Scotty 匹配?

我有一个简单的服务器

我想index.html在所有路线上服务,例如。get "*" $ file "./index.html",但这不起作用。如何做到这一点?

0 投票
1 回答
243 浏览

mysql - 在haskell中使用mysql简单的Scotty api

我正在关注教程,它使用 scotty 和持久性来创建一个简单的 API。

但是,我正在尝试使用 scotty 和 mysql 简单库创建一个简单的 api。

现在我被困在代码中的某一点。

在下面的代码中,我无法将getUser函数转换为键入“ActionT Error ConfigM”,因为我的代码失败了。

谁能帮助我了解如何转换 getUser 函数以实现所需的类型签名?

代码

错误

0 投票
1 回答
356 浏览

haskell - HSpec中的多个前功能?

我有一个可以通过调用此函数来创建的内存存储库:

whereInMemoryGameRepository定义如下:

在为我的 Scotty 应用程序编写测试时,我看到了使用这种方法的示例:

这一切都很好,但我还需要以某种方式初始化 InMemoryGameRepository(通过调用newEmptyRepository)并在我的测试中使用创建的实例。因此,我已更改app为:

我正在尝试创建一个使用存储库和的测试,IO Application例如像这样(不起作用):

wherestartGame定义如下:

在这里,编译器说(显然)repo不在范围内。但我怎样才能做到这一点?即我想在测试中共享 和 的单个newEmptyRepository实例app

Ps:你可以在github上看到完整的应用程序。