Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何使用通用路由和;山;将它们转换成更大的服务应用程序? 概念_Haskell_Servant - Fatal编程技术网

Haskell 如何使用通用路由和;山;将它们转换成更大的服务应用程序? 概念

Haskell 如何使用通用路由和;山;将它们转换成更大的服务应用程序? 概念,haskell,servant,Haskell,Servant,我借用了以下我在概念上试图做的事情: 在Servant中编写一个小型web应用程序,其他人可以在更大的Servant应用程序中“包括/装载” 他们应该能够为这个迷你应用的URL指定一个“挂载点”(基本上是一个URL前缀)。他们还应该能够指定访问此迷你应用程序的身份验证(强烈建议!) 此迷你应用程序中使用的各种safeLinks都应该尊重此“挂载点”(否则所有链接都将变成404) 细节 以下是的详细说明: 我有一张像这样的照片: 数据路由=路由 {rFilterResults::route:-

我借用了以下我在概念上试图做的事情:

  • 在Servant中编写一个小型web应用程序,其他人可以在更大的Servant应用程序中“包括/装载”
  • 他们应该能够为这个迷你应用的URL指定一个“挂载点”(基本上是一个URL前缀)。他们还应该能够指定访问此迷你应用程序的身份验证(强烈建议!)
  • 此迷你应用程序中使用的各种
    safeLinks
    都应该尊重此“挂载点”(否则所有链接都将变成404)
细节 以下是的详细说明:

我有一张像这样的照片:

数据路由=路由
{rFilterResults::route:-QueryParam“filters”Filter:>Get'[HTML](HTML())
,rStaticAssets::route:-“资产”:>原始
,rEnqueue::route:-“enqueue”:>捕获“jobId”jobId:>发布“[HTML]NoContent
,rRunNow::route:-“run”:>捕获“jobId”jobId:>发布“[HTML]NoContent
,rCancel::route:-“cancel”:>捕获“jobId”jobId:>发布“[HTML]NoContent
,rRefreshJobTypes::route:-“刷新作业类型”:>发布'[HTML]无内容
,rRefreshJobRunners::route:-“刷新job runners”:>发布“[HTML]无内容
}派生(通用)
我有一个单独的应用程序,它使用
RecordWildCards
技巧在顶级命名空间中获得一系列安全链接生成函数:

Routes{..}=allFieldLinks'absText::Routes(AsLink Text)
链接->文本
absText l=“/”(toS$show$linkURI l)
作业队列的web ui生成的HTML使用以下顶级函数:

form.[action.(Links.rCancel作业ID),method.“post”]$do
问题
  • 我一直在关注中的
    safeLink
    ,以及相关函数,但无法确定
    safeLink
    的第一个参数是否基本上自动计算出“装入点”?如果是,那么使用
    fieldLink
    (以及相关功能)的相应方式是什么
  • 如何“组合”多个API(每个API都定义有一个通用记录),以便为组合的API生成安全链接函数(和服务客户端)
  • 我的HTML生成函数基本上需要接受“挂载点”作为参数,生成安全链接函数,然后到处传递它们吗?i、 e.我将无法使用
    RecordWildCards
    技巧在顶级命名空间中获取这些函数,对吗
  • 如果我的库的用户决定在将这个小应用程序合并到一个更大的服务应用程序时添加基本身份验证,那么我的实际处理程序会发生什么情况

我不太清楚如何参数化主API,但这有助于我解决类似问题: