Apache SlingのDiscover Sling in 15 minutes – the Sling Launchpad 前回の Apache Slingを動かしてみたの続き
Render your content using server-side javascript (ESP)
前回用意したcurlで次のコマンドを実行する。
curl -X MKCOL -u admin:admin http://localhost:8080/apps/foo curl -X MKCOL -u admin:admin http://localhost:8080/apps/foo/bar
- -X MKCOL でコレクションの作成。 Jackrabbitで言うノード、Windowsで言うフォルダの作成みたいなもの。 appsの下にfooを作って、さらにその下にbarというコレクションを作っている。
- -u でユーザー名:パスワード を指定
カレントディレクトリ(C:\work)にhtml.esp という名前で次の内容のファイルを作成しておく。
<html> <body> <h1><%= currentNode.title %></h1> </body> </html>
.espは Embedded Server Pages というもので、 HTMLに埋め込まれたスクリプトがサーバーサイドで処理されてクライアントに送られる。(Server Pages)
ファイルを作成したら次のコマンドでapps/foo/bar以下にアップロードする。
curl -u admin:admin -T html.esp http://localhost:8080/apps/foo/bar/html.esp
以下のURLにアクセスすると http://localhost:8080/content/mynode.html some title と表示される。
ちなみにhtml.espをアップロードするまえにhttp://localhost:8080/content/mynode.html へアクセスするとダンプ画面。
Resource Propertiesのtitle:”some title”がheader.espで処理されて表示されるのだね。titleは特に指定はしていないのでデフォルトでこの値になるのだろう。
Additional examples
Let Sling generate the path of a newly created node. 次の例はblogノードを作って、タイトルをつけている。
curl -X POST -u admin:admin "http://localhost:8080/content/blog" curl -D - -u admin:admin -F"title=Adventures with Sling" "http://localhost:8080/content/blog/"
新しいノードを追加すると勝手にユニークな名前をつけてくれる。 curlの-Dオプションで以下のようなheaderもdumpも出力される。
HTTP/1.1 100 Continue HTTP/1.1 201 Created Location: /blog/adventures_with_slin Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Server: Jetty(6.1.x)
Locationにあるとおり、adventures_with_slinという20文字の名前がついている。 http://localhost:8080/blog/adventures_with_slin.html
Add a page header with sling.include
あとは同じ要領でespとcurlを駆使してノードを追加したりファイルをアップロードしたりしている。 こうしてパーツを組み合わせていけば、ページのデザインが出来ていく。 それに上の新しいノード追加の例を組み合わせれば、簡易的なブログサービスが出来上がってしまう。 詳しくは
46 Line Blogを参照。 コンテンツを出し入れする仕組みはほぼ整っているので、入れ物(コンテンツリポジトリ)を決めるのととViewに専念すればよい。