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

haskell - 在 ScottyT 中使用 ReaderT 转换器(与 ActionT 相比)

我正在尝试使用 ReaderT monad 转换器方法通过我的基于 Scotty 的应用程序进行线程配置,但在这样做时遇到了麻烦。在定义路由(因为其中一些取决于配置)和处理实际请求时,我都必须使用配置。

后者在 ActionT 中工作得很好,但无论我尝试什么,我都无法在 ScottyT 中获得正确的类型。

这是我从 Scotty GitHub 存储库中的 ReaderT 示例编译的最小示例:

我得到的错误是:

我查看了概述 ScottyT 类型的代码,实际上似乎没有为它定义 MonadTrans 的实例。

但是,我觉得我没有足够的法力和 Haskell 经验来找到摆脱它的方法,希望能提供任何帮助!

谢谢!

0 投票
1 回答
359 浏览

scotty - 如何使用 Scotty / wai 设置 cookie?

我浏览了 Scotty 文档,但我只看到了设置 HTTP 标头的能力,这似乎有点低级。

有没有更优雅的方法来实现这一点?第三方库?

据我所知,一个解决方案是使用mapHeaderfrom Network.Wai.Util。但就像提到的那样,这似乎相当低级。

还有一个cookie包,但它似乎只返回一个完全呈现的cookie“字符串”,而不是能够检索键/值。

还有:https://hackage.haskell.org/package/HTTP-4000.3.9/docs/Network-HTTP-Cookie.html但是好像没有Expiry参数?

0 投票
1 回答
394 浏览

http - 获取请求时出现 Elm NetworkError,但控制台说没问题

我正在 Elm 中构建我的第一个 Web 应用程序,我遇到了一个问题,当我向本地服务器发出 get 请求时,Elm 说它是“NetworkError”,即使浏览器控制台说它有效。

我做了一个最小的例子如下:

服务器是用 Haskell 和Scotty制作的:

它所做的只是在您向 localhost:3000 发出 get 请求时以字母“a”响应。Elm 应用程序只显示响应(如果有)和错误(如果有)和一个按钮来执行获取请求:

这是我执行获取请求时浏览器控制台的屏幕截图。我对这些东西不太了解,但据我所知,它看起来不错。 浏览器控制台截图

我想要的是“响应”在其后显示字母“a”,而“错误”为空白。相反,“错误”是“网络错误”,“响应”是空白的。

我已经把这个最小的例子放在了一个 Git repo 中,以防有人愿意尝试并告诉我出了什么问题:

https://github.com/8n8/el​​mnetworkerror

(我知道Elm http request 有一个非常相似的问题,returns NetworkError for successful requests但还没有答案,我认为它会从一个完整的最小示例中受益。)

0 投票
1 回答
123 浏览

haskell - scotty 没有检测到端口是否已被使用?

我正在运行这个例子。它有效。但是,如果我运行另一个实例,我希望它会因异常而崩溃,但没有。预期的异常应该说类似“端口 3000 已在使用中”,当您python -m SimpleHTTPServer 8000在不同的终端中运行两个时,这是一个类似的错误。

0 投票
1 回答
521 浏览

haskell - Haskell Scotty and Elm Http NetworkError

I wanted to look into web development with haskell for the back-end and elm for the front-end. So i wrote this two simple "hello world" code code snippets

elm:

haskell/scotty:

both work perfectly on their own - meaning the elm code can get data from servers like httpbin and the scotty server handles requests i send with a browser or tools like wget/curl etc fine but when i try to use the two together the http.send call in elm returns a network error

i suspected it may be a problem that both servers are hosted on the same computer (wouldn't know why but i wanted to eliminate the possibility) so i hosted the client site on another computer which i know has a working connection to the computer which hosts the spock back-end (works with wget etc) but it still didn't work.

am i missing something obvious, or what is the problem? thx in advance

0 投票
1 回答
218 浏览

haskell - Haskell scotty 和持久性休息 API

我是 Haskell 的新手。我想用 scotty 和持久性创建简单的 crud rest api。我在一张表中使用 sqlite todo (title text, description text),我在表中有一些记录。/todos我的意思是以json 格式显示 enpoint 上的所有记录。当我打印它时,我得到一个错误

我的代码:

如何纠正这个?

0 投票
1 回答
242 浏览

json - 如何使用 scotty 从 sqlite 和响应 json 获取数据?

我正在尝试使用 Haskell 和 Framework Scotty 构建一个简单的博客。使用 Model.hs 我有:

我已经使用 sqlite 创建了一个模式并填充了一些数据,现在我正在尝试在我的 Storage.hs 中使用此方法获取这些数据

我的意图是在我的 Main.hs 中获取 json 格式的数据:

但是我得到一个 IO [Model Post],我不知道如何将它呈现为 json,所以它不断收到这个错误:

我的项目在github上运行,只需使用 stack build 和 stack ghci 之后。在建筑物中,我已经收到此错误。

0 投票
1 回答
57 浏览

haskell - 阻止解析类型

我最近才开始在 Haskell 中编码,并且开始使用do block。我来自 Scala 世界,在阅读了一本书和一些博客之后,我看到do block是我们理解的灵感。但是我仍然在为每个函数作为输入->输出传递的参数而苦苦挣扎

在我的代码中,我使用 scotty http 服务器库来获取请求,并尝试在 mySQL 中保留该请求。

但是在这一行中,我尝试从 Maybe 中获取值以发送到另一个要持久的函数

它永远不会编译,因为函数没有返回预期的类型

ActionT 文本 IO(可能是用户)

IO 用户

这是我的洞计划

0 投票
1 回答
165 浏览

haskell - 在 Scotty do block 中添加打印

如果问题很愚蠢,我对 Haskell 很陌生,所以提前抱歉,但我无法在谷歌中找到解决方案。

假设我有这个使用Scotty Web 框架的程序:

我想添加一个日志,因为它在运行时失败,我不知道为什么。所以我的想法是在 do 块中添加一些打印来检查值。

但由于该do块必须返回 aActionM我无法打印并返回一个IO. 好吧,或者至少我不知道怎么做。

问候

0 投票
1 回答
498 浏览

haskell - Haskell 中的阻塞线程

我开始使用 Haskell 进行异步编码,现在我正在使用forkIO它创建一个绿色线程(对吗?是绿色线程吗?),然后我使用 aMVar从新线程与主线程通信一次我完成了,我有价值。这是我的代码:

在读取MVar类之后,我可以看到一个块线程类,如果 MVar 为空,则阻塞线程直到被填充。

我来自Scala其他避免阻塞的地方,我们在 Future 对象中有回调的概念,其中线程A可以创建一个 ThreadB并接收一个Future.

然后订阅一个回调函数,一旦线程完成该值onComplete,它将被调用。B

但是在那段时间里,线程A并没有被阻塞,并且可以被重用于其他操作。

例如,在我们的 Http 服务器框架中VertxGrizzly通常配置为具有少量操作系统线程(4-8),因为它们永远不应该被阻塞。

难道我们在 Haskell 中没有另一种纯粹的无阻塞机制吗?

问候