问题标签 [happstack]

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 回答
121 浏览

haskell - 如何在 Happstack 中分离路由失败和索引页面访问?

我希望用户能够访问myserver.com并来到索引路由。

我想在他们访问时显示列表页面myserver.com/pages

但是,如果用户访问一个无效的 url,例如myserver.com/invalidpath/blabla它落入indexPage路由。

我想在404 page访问无效网址时回复。

这是我的路线示例:

我现在想到的是,在我的indexPage函数中,我可以检查路径是否包含任何内容或是否为空。通过这种方式,我可以确定失败是来自无效 url 还是索引页面访问。

有没有好的方法来做到这一点?

0 投票
2 回答
2146 浏览

haskell - 如何在另一个 monad 中使用可能的 monad?

我有这段代码(在 happstack 内,但可能只是 IO monad):

我想删除嵌套的 case 语句并编写如下内容:

...但 userId 最终成为一种类型,Maybe String而不仅仅是String. 如何do使用 Maybe monad 评估嵌套块?(我也会接受一种不同的重构来删除嵌套案例。)

更新:以下是同一问题的通用版本,虽然是人为的:

0 投票
1 回答
166 浏览

haskell - 使用改革库创建表单时,如何将所有错误放在一个列表中?

我正在关注改革库的教程。我目前有一个包含两个必填字段的表单及其设置,因此每个字段的错误消息都显示在它旁边。

例如,如果我将此表单提交为空,则验证将失败,它将要求用户再次填写它,它将如下所示:

我想知道如何为表单制作一个错误列表,如下所示:

我试着做

但随后错误消息根本不显示!


我没有包括一个完整的可运行示例,因为为此需要一堆额外的样板,我希望我的问题只是更好地理解应用符号。以下是一些有用的函数的类型签名:

http://hackage.haskell.org/package/reform-0.2.1/docs/Text-Reform-Core.html#v:-60--43--43-

http://hackage.haskell.org/package/reform-b​​laze-0.2.0/docs/Text-Reform-Blaze-Common.html#v:errorList

0 投票
2 回答
194 浏览

haskell - 有没有办法在 Happstack 中获取“当前路线”?

每当我在我的网站中使用表单时,我都需要将“操作”属性传递给它(我不想将其留空,因为我更喜欢验证标记)。现在它看起来像这样:

对于操作与它们所在的页面相同的表单,我不喜欢像现在这样写两次 URL。有没有办法获取“当前网址”?


到目前为止,我最好的选择是将动作转换为显式参数/变量

但如果我这样做,那么我将有一个额外的参数,我需要命名并传递给我的函数。我也认为需要这样做"/" ++有点难看。

0 投票
0 回答
292 浏览

haskell - happstack-server-tls 仅适用于自签名证书

我正在尝试使用happstack-server-tls创建一个 Web 服务器,该服务器将使用由私有 CA 签名的证书。不幸的是,TLS 握手似乎只有在我给服务器一个自签名证书时才能成功。Wireshark 显示,当我的服务器使用由我的私有 CA 签名的证书时,它不会向客户端发送 Server Hello 消息,而是发送 Fatal (2) Alert 消息报告握手失败 (40)。

这不是 Web 浏览器拒绝服务器证书的情况;Wireshark 表明,TLS 握手甚至从未到达服务器向浏览器提供证书的地步。这也不是未能就加密算法达成一致的情况,因为服务器使用自签名证书运行没有问题,该证书使用与我想要使用的算法相同的算法。证书本身似乎是有效的,因为它openssl s_server在命令行上按预期工作,并且 happstack-server-tls 似乎使用 OpenSSL 进行 TLS 操作,所以我认为证书的生成方式不是问题。

我需要做什么才能让 happstack-server-tls 使用非自签名证书?

下面是一个最小的 Haskell 程序,它使用 happstack-server-tls 在端口 8443 上运行 Web 服务器来演示该问题。它最多需要三个参数:包含服务器私钥的文件、包含服务器证书的文件和(可选)包含 CA 证书的文件。

上述程序使用通过以下脚本生成的自签名证书工作:

并运行以下命令:

它的工作原理是 Web 浏览器可以成功连接到服务器(尽管正如预期的那样抱怨自签名证书)。

但是,使用以下脚本生成的非自签名证书不起作用,该脚本首先创建一个新的私有 CA,然后使用该 CA 为服务器生成证书:

当我运行以下命令时:

Web 浏览器无法连接,因为(如 Wireshark 所示)初始 TLS 握手失败。

但是,Web 浏览器在用作使用相同证书的服务器时可以建立 TLS 连接:openssl

为了完成示例,这里是onelevel.openssl.cnf前面引用的配置文件,它提供了私有 CA 的配置:

0 投票
1 回答
973 浏览

c++ - cryptopp 外部库依赖

我尝试happstack-server-tls在 Arch Linux (3.12.9) 上通过 cabal 安装软件包,但收到此错误:

第一次看到这个错误信息后,我已经crypto++通过 pacman 安装了。但这对我没有帮助。

我什至试过这个:

但仍然没有运气。

我检查了 crypto++ lib 是否适用于这个 test.cpp 文件:

并用g++ -g3 -ggdb -O0 -Wall -Wextra -Wno-unused -o test test.cpp -lcryptopp -pthreadtest.cpp 编译好。

然后我试着

但同样,仍然没有运气。

有人遇到过这个问题吗?它有什么解决办法吗?

0 投票
3 回答
359 浏览

haskell - Haskell, String vs ...String?

I'm currently following the Happstack lite tutorial from their website. http://happstack.com/page/view-page-slug/9/happstack-lite-tutorial

Right now, I'm implementing the echo function, and the compiler is giving me an error message that I don't really understand. Here's my code:

And here's the error message:

I thought that a quote-enclosed "thing", like the

was a string. Yet, from what I understand from the compiler error, p will not accept a string as argument. Can someone explain this to me?

0 投票
2 回答
752 浏览

rest - 如何在 Haskell 中实现 HATEOAS?

我有一些旧代码在 Web API 上公开服务,该 API 基本上适用于 HTTP 动词。我想移动这个项目以使用超媒体控件(HATEOAS)。我想知道是否有任何库已经支持根据 HAL 或 JSON-LD 规范在子资源的资源表示中嵌入链接。我用谷歌搜索,但我找不到任何东西。很高兴知道 Yesod、Snap 或 Happstack 等成熟项目之一是否计划支持此功能?

编辑:澄清一下,我对REST 成熟度模型的第 3 级感兴趣

0 投票
2 回答
458 浏览

haskell - 为什么不能分解单子?

我不明白为什么我不能分解(比如说 IO)单子。喜欢IO a -> a

我的问题起源于使用 happstack 并希望从中得到Text. 然后我记得读到monad 是无法逃脱的。 ServerPart (Maybe Text)(optional $ lookText "domain")IO

我已经阅读了unsafePerformIO它不好的原因及其原因,但这些原因似乎都没有回答我的问题。

0 投票
2 回答
110 浏览

haskell - 如何解决消化函子代码中的“HTTP 请求失败:何时不是字段”运行时错误?

我有一个简单且不完整的 Happstack 应用程序,它包含一个消化函子形式,定义如下:

其视图定义如下:

提醒定义如下:

当我浏览到表单 (/setrec) 的路径时,我得到一个空白页,控制台上打印了以下错误消息:

我发现该错误消息的定义位置(在https://github.com/jaspervdj/digestive-functors/blob/7e50d5686abc4b39389ed195693660d758987c7c/digestive-functors/src/Text/Digestive/Form/Internal.hs中)但我可以从那里看不到为什么找不到“何时”字段。

这里有什么问题?

如何调试此类问题?

这是github上整个代码的链接,以防您需要更深入地查看代码:

https://github.com/nmbooker/recremind