问题标签 [haskell-wai]

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

haskell - Wai 请求复印

我希望能够使用请求正文的内容作为缓存键的一部分。

我当前的代码如下所示:

我在这里看不到任何解决方案。如何从 cacheKey 和 req 对象复制请求或生成另一个请求?

或者事件更好还有其他更好的解决方案吗?

作为奖励点,有人可以指出我将 Wai Application 的类型从更改为的Request -> IO Response理由Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived

0 投票
1 回答
142 浏览

haskell - 尝试实现 WAI HTTP Server + Fallback 代理时的 IO monad 问题

我想做的是创建一个有点智能的反向代理服务器,它应该自己处理一些请求并将其他请求转发到选择的后端。为了使它具有挑战性,我正在努力在 Haskell 中做到这一点,我完全是新手。

这是我到目前为止提出的代码:

它工作得很好,但是当我换成proxyStubApp实际的时,proxyApp我不得不到处添加IO。特别是它被添加到app,因此给我留下以下编译错误消息:

我觉得我理解它为什么会发生,但我不知道如何应对它:(或者我做错了什么?

谢谢!

PS 如果您想自己编译,这里是依赖项:wai warp http-types text bytestring wai-extra time http-reverse-proxy http-client

0 投票
1 回答
387 浏览

haskell - 在 WAI 的上下文中,“LBS”是什么意思?

WAI中有几个包含“LBS”的标识符:

  • Network.Wai.responseLBS:: Status -> ResponseHeaders -> ByteString -> Response

  • -- | Store uploaded files in memory
    lbsBackEnd:: Monad m => ignored1 -> ignored2 -> m S.ByteString -> m L.ByteString

我在 WAI 文档中找不到任何提及“LBS”的内容。这是什么意思?

0 投票
0 回答
74 浏览

haskell - 在 Yesod 中添加请求特定数据

我正在将 rabbitmq 添加到我的 yesod 应用程序中,并根据文档(在底部)看起来我应该为每个线程打开一个新通道,这意味着在 yesod 中每个请求都有一个新通道。据我所知,我添加它的两个选项是使用wai 中间件或 yesod 中间件。在 WAI 请求中,我可以使用Vault来存储这样的任意值。我想知道是否Vault是要走的路,或者我是否应该在更高级别的某个地方添加它 a YesodRequest,如果是的话,在哪里?

0 投票
1 回答
152 浏览

haskell - 无法在 Word8 上进行模式匹配

在我的 Servant/Wai 应用程序中,我想将所有请求从“domain.com”redict 到“www.domain.com”

错误是

我知道这意味着什么,我认为应该已经为 Word8 实现了 Show 类,如果没有,那肯定是有原因的。也许我做错了?

我该如何解决这个问题或以另一种更好的方式来解决这个问题?

更新:

我无法编译:

总是有类型不匹配。

0 投票
1 回答
96 浏览

haskell - 将标准输入流式传输到 Wai.EventSource

我想使用text/event-stream. Network.Wai.EventSource看起来是个不错的选择。

我尝试使用此代码:

哪个(我认为)可以:

  • 将标准输入读取为惰性字节流
  • 将 ByteStream 拆分为行
  • 为所有行生成一个 ServerEvent(这感觉不对 - 大概应该有多个事件?)
  • 构建一个 WAI 应用程序IO ServerEvent
  • 将应用程序绑定到端口 1337

当我运行它(例如使用ping -c 5 example.com | stack exec test-exe)时,它不会响应,直到整个 stdin 被读取。

如何构建一个每次从标准输入读取一行时刷新 HTTP 连接的 Wai 应用程序?

0 投票
1 回答
94 浏览

haskell - 从servant-0.4.4.7 迁移到servant-0.7.1

我使用了servant-0.4.4.7. 以下是我的模型代码:

这段代码有效。但是当我使用时servant-0.7.1,我得到了错误:

我知道存在类型不匹配,但如何解决它,我无法理解。

谢谢!

0 投票
1 回答
172 浏览

ajax - 在Servant中使用ajax

我将 Haskell 与servant-0.7.1实现服务器一起使用。以下是我的源代码:

型号User

使用了testin curl,如下图所示。

一切正常。将数据添加到数据库中。但是当我ajax从后端使用时,如下图所示。

我得到一个错误!

调试器检查对象objectData。好的(Object {userFam: "qqq", userIm: "www", userOt: "eee", userEmail: "rrr", userLogin: "ttt"…})。我不明白发生了什么事。

0 投票
1 回答
296 浏览

haskell - 加入两个 Network.Wai.Application

我分别使用servantNetwork.Wai.Application.Static用于 json api 和静态文件服务。我想加入这两个应用程序,如果staticApp服务失败,请求应该去jsonApp

我试着找出并阅读websocketsOr它是如何做到的。Websockets或

我终于写道:

但似乎其他人(wai 本身)会这样做,处理许多可能的情况。但我找不到。

我缺少哪些边缘情况(例外??)以及我可以使用哪些其他 api 来做同样的事情?

0 投票
1 回答
275 浏览

haskell - Haskell-Scotty:设置自定义标题(x-frame-options)

Haskell新手在这里!

在我的 haskell 项目中,我使用 scotty 来提供一些动态生成的 html 页面。问题是页面无法在 iframe 中打开,因为“x-frame-options”标头设置为“SAMEORIGIN”。

如何将该标题更改为不同的内容?我想为所有响应设置该标题。有没有可以做到这一点的中间件?

谢谢!