1. 动机
我正在编写自己的迷你维基。我希望能够轻松地从 markdown 转换为 LATEX/HTML,反之亦然。经过一番搜索,我发现了Pandoc,它是用 Haskell 编写的,我可以使用 FastCGI 模块在我的 Apache 服务器上运行 Haskell 程序。
2.问题/问题
我不确定我应该使用什么协议来向我的 FastCGI 脚本发送输入/输出变量(POST/GET?),以及如何准确地完成。有什么想法、建议、解决方案吗?
3. 采取的步骤
3.1 尝试
这是我到目前为止所做的(基于示例代码)。请注意,我没有使用 Haskell 的经验,目前我没有太多时间学习这门语言。我只是希望能够使用 pandoc 文本格式转换工具。
module Main ( main ) where
import Control.Concurrent
import Network.FastCGI
import Text.Pandoc
--initialize Variables/ functions
fastcgiResult :: CGI CGIResult
markdownToHTML:: String -> String
--implement conversion function
markdownToHTML s = writeLaTeX defaultWriterOptions {writerReferenceLinks = True} (readMarkdown defaultParserState s)
--main action
fastcgiResult = do
setHeader "Content-type" "text/plain"
n <- queryString
output $ (markdownToHTML n)
main :: IO ()
main = runFastCGIConcurrent' forkIO 10 fastcgiResult
此代码读取请求 url 中问号后面的字符串。但这不是一个好的解决方案,因为某些字符被省略(例如 '#' )并且空格被替换为“/20%”。
提前致谢。
3.2 网络.CGI
在此处找到的文档。在“输入”标题下,有多种获取输入的方法。哪一个适合我?
是吗 :
获取输入变量的值,例如从表单中。如果变量有多个值,则返回第一个值。例子:
query <- getInput "query"
假设我有一个 HTML POST 表单,name='Joe'
我可以使用 getInput 获取它吗?如果是这样,我该如何处理Maybe String
类型?