SWI-Prologにはhttpのパッケージがあるので、webアプリケーションも出来ちゃうんだぜ☆ というわけで、もきゅもきゅとやってみましょう。
httpパッケージをインストール
httpパッケージをインストールされてない?という感じだったので、インストールするのです。
[shell] $ cd [DLしてきて解凍したplのディレクトリ]/packages/http $ ./configure $ make $ [sudo] make install [/shell]
てってれー
Hello Worldしてみる
SWI-Prolog公式のHowTo Hello Worldのページに親切に書いてある。 英語はふんわりと読んで、とりあえずファイルを作る。hello.plとか。
[erl] :- use_module(library(http/thread_httpd)). :- use_module(library(http/http_dispatch)).
:- http_handler(root(hello_world), say_hi, ). % (1)
server(Port) :- % (2) http_server(http_dispatch, [port(Port)]).
say_hi(_Request) :- % (3) format('Content-type: text/plain~n~n'), format('Hello World!~n'). [/erl]
とりあえず、swiplに食わせる。もぐもぐ。 [shell] $ swipl -f hello.pl [/shell] Errorが出てないか注意。
んでもって、空けておいたポートを指定してあげる。 [shell] 1 ?- server(5000). [/shell]
そして、以下にアクセス。 http://midnightblue.jp:5000/hello_world
ちゃんとHello Worldが出ました≧∇≦
ふんわりとした解説みたいなもの
[erl] :- use_module(library(http/thread_httpd)). :- use_module(library(http/http_dispatch)). [/erl] おまじない、みたいな。
[erl] :- http_handler(root(hello_world), say_hi, ). % (1) [/erl] /hello_world がリクエストされたらsay_hiを呼ぶよ!みたいな。
[erl] server(Port) :- % (2) http_server(http_dispatch, [port(Port)]). [/erl] httpdを指定されたPortで起こすよ!みたいな。
[erl] say_hi(_Request) :- % (3) format('Content-type: text/plain~n~n'), format('Hello World!~n'). [/erl] say_hiの実装、みたいな。 とりあえずリクエストが着たらテキストでHello World!と書き書き、みたいな。
こんなふんわりとした解説よりもHowToページの英語のほうが真面目に書いてありますが、感覚としてなんとなくつかめればいいかな的な。
無事におわってよかったよかった。 ちなみに、実行したswiplをhalt.しちゃうとサーバも終わるよ。
まとめ
SWI-PrologのhttpdでWebアプリなHello Worldができました('∇')わふわふ