1.モチベーション
私は自分のミニウィキを書いています。マークダウンからLATEX/HTMLに、またはその逆に簡単に変換できるようにしたいと思います。いくつか検索した後、Haskellで書かれたPandocを発見し、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 Network.CGI
ドキュメントはここにあります。「入力」という見出しの下には、入力を取得するためのいくつかのメソッドがあります。どちらが私にぴったりですか?
それは...ですか :
たとえば、フォームから入力変数の値を取得します。変数に複数の値がある場合は、最初の値が返されます。例:
query <- getInput "query"
では、HTML POSTフォームがあり、name='Joe'
getInputを使用してこれを取得できるとしましょう。もしそうなら、私はどのようにMaybe String
タイプを処理しますか?