问题标签 [servant]

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

haskell - Issues using pattern matching with servant-client

In the Servant docs, we have the following api:

and we can define client functions like so:

If our api type instead looked like:

which is identical to the original api but with an additional "test" query parameter for all endpoints, how would we obtain our client functions? I have tried several variants of pattern matching, but to no avail.

If all else, fails, the "test" query parameter could be repeated in the api type for each endpoint, but this is Haskell, we try to avoid repetition.

0 投票
1 回答
132 浏览

haskell - 一个持久实体的多个 JSON 实例

我正在同时使用 Servant 和 Persistent。我有一个User实体,我想知道是否可以仅使用其字段的一个子集进行响应,具体取决于上下文。

让我们考虑以下两个端点:

这是我们的User模型:

GET /user请求到达时,假设我们只想响应email身份token验证。另一方面,当请求到达时,我们希望只用,和GET /profile/:username来响应。usernamebioimage

我们怎样才能做到这一点?谢谢。


更新:我相信可以通过对特定表使用不同的记录来“转换”持久类型和仆人请求类型。例如,一个由 Persistent 使用,另一个用作与客户端的接口。但是,这可能需要一个函数在两者之间进行转换。随着逻辑的发展,我想事情会变得很麻烦。

此外,我认为定义 ToJSON 和 FromJSON 实例可以解决问题,但我无法理解它。

0 投票
1 回答
365 浏览

haskell - 如何使用 Esqueleto 执行“SELECT ... IN (SELECT ...)”?

考虑以下两个模型和一个GET /articles/:slug/comments请求,我想检索属于一篇文章的评论,基于它的slug.

使用persistence's rawSql,我们可以如下完成

但是,鉴于我想维护 Haskell 和 SQL 之间的类型安全,我想使用esqueleto. 这是我正在努力的部分。通过阅读文档,sub_select似乎是完成这项工作的工具。这是我所拥有的:

我也注意到in_ 运算符,但我不知道如何使用它,也不知道它是否比sub_select更合适。

我错过了什么?语法是否正确?谢谢。

0 投票
1 回答
100 浏览

api - 从仆人论文中理解“回声”服务示例 API

仆人论文的介绍包含以下示例 API 类型:

我试图理解这个例子。它似乎在定义一个类型同义词,但似乎涉及到一些我以前没有见过的东西。

以下是我对此的三个问题:

  1. 类型定义中如何存在字符串文字?

"echo"是一个字符串文字。我认为这些仅用于定义特定的字符串,并且不知道在类型声明中使用时这意味着什么。

  1. 符号是什么:>

'servant' 包中这个符号的定义似乎是在这里定义的,看起来像这样:

我猜这:>对应/于 api 字符串中的 a,但看不到这个定义是如何实现的。

这是我第一次看到函数类型以外的非字母数字类型->

  1. 列表类型前的撇号是什么意思?

[PlainText]我会理解简单地表示一个 PlainText 元素的列表,但相比之下我不明白是什么’[PlainText]意思。

0 投票
2 回答
1182 浏览

haskell - 在 Haskell 中,列表 ( '[Something] ) 前面的撇号是什么意思?

我正在阅读 Servant文档并遇到了这一行:

该列表在'做什么?

0 投票
1 回答
289 浏览

haskell - 使用 Haskell Servant 在后台处理作业

我正在构建一个可以处理长时间运行的作业(可能会失败)的 Facebook Messenger 聊天机器人,我需要在作业完成之前向 Facebook 响应 200。

我尝试过使用 Pipes,但过了一段时间我意识到我不知道自己在做什么。

我怎样才能做到这一点?

提前致谢

编辑:正如 epsilonhalbe 指出的那样,这个问题非常广泛。我会尽量让它更清楚。

现在我有这个:

问题是“doSomeStuff”是一个很长的过程,它可能会出现超时错误。所以我想要实现的是在流程完成之前响应“ok”。Http 代码为 202 Accepted。

我在想向邮箱发送消息可能是一个解决方案。但我想要一种更惯用的方式来做到这一点。

0 投票
1 回答
875 浏览

haskell - 仆人实现

我想使用servant,特别是实现一个识字的haskell文件。我不知道如何使用 literate haskell 文件。我一直在搜索文档,但没有找到任何有用的信息。

到目前为止,我已经使用扩展名正确命名了文件,.lhs并且我已经执行了runhaskell filename.lhs. 我收到以下错误:

这是我下面的 .lhs 文件:

0 投票
0 回答
55 浏览

haskell - Haskell 中从堆栈 lts-8.6 迁移到 lts-9.3

我在我的 Haskell 项目中使用了堆栈 lts-8.6。下面是我用 lts-8.6 正确编译的代码:

对于 lts-9.3,我替换NatNT. 但是当我使用 lts-9.3 时,我得到一个错误:

我无法理解要对我的代码进行哪些更改,以使其成为工人!

0 投票
1 回答
231 浏览

haskell - haskell webframeworks 速度,GHCi vs Compiled

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

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

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

0 投票
1 回答
73 浏览

haskell - 为 Newtype 派生`ToHtml`?

鉴于:

我创建了一个newtype

但是,范围内似乎没有ToHtml Foo类型类:

还有一个存在于String

ToHtml Foo如果没有明确的实例定义,如何获得?