Apache CouchDB使用HTTP API(因此)可以用作靜態Web服務器 - 類似於Nginx或Apache HTTPD,但還有額外的好處,您還可以使用MapReduce視圖,複製以及其他位瞭解Apache CouchDB。
僅給出核心API,您可以將整個靜態網站作爲附件存儲在單個JSON文檔中,並通過它自己的URL爲每個文件提供服務。如果單個文檔是_design
文檔,那麼您將獲得重寫器的附加價值。
下面是一個例子人造 JSON文件,將做到這一點:
{
"_id": "_design/site",
"_attachments": {
"index.html": {
"content_type": "text/html",
"data": "..."
},
"images/logo.png": {
"content_type": "image/png",
"data": "..."
},
"rewrites": [
{
"from": "/",
"to": "index.html"
}
]
}
的"data": "..."
的實際價值將編碼文件的版本中的Base64。請參閱CouchDB Docs中的Creating Multiple Attachments示例。
您還可以使用CouchDB的管理用戶界面,例如Futon或Fauxton - 可在http://localhost:5984/_utils
處獲得 - 兩者都提供文件上載功能。但是,這些系統將要求首先存在JSON文檔,並將PUT
the attachment直接放入數據庫中。
完成後,您可以在CouchDB(或Cloudant)中設置virtual host條目,該條目指向該設計文檔中的_rewrite
端點。像這樣:
[vhosts]
example.com = /example-com/_design/site/_rewrite/
如果你不是80端口上託管,那麼你就需要在http://example.com:5984/
請求的網站。
使用_show
函數(如您的示例中所示)僅在您希望將JSON轉換爲HTML(或不同的JSON,XML,CSV等)時纔是必需的。如果你只想靜態託管,那麼上面的選項非常有效。^_^
還有很多用於創建這些文檔的工具。 couchapp.py和couchdb-push是我最常用的,並且都支持CouchApp filesystem mapping "spec"。
希望有幫助!
你想使用一個_rewrite端點來訪問多個數據庫(這是它看起來像這裏)?我不確定PouchDB服務器如何處理它,但CouchDB默認情況下不允許。否則,關鍵要記住的是,所有「to」值都與包含「rewrites」鍵的設計文檔相關,因此「」to「:」_show/index.html「' – BigBlueHat
我很高興重寫規則在不同的數據庫中。我真的只需要一個完整的重寫文檔示例,因爲我沒有運行實現文檔中顯示的部分片段。 – MattMS
你能否解釋一下你想要完成的事情?它看起來像你可能過度使用的數據庫部門和顯示功能。想知道更多,所以我可以幫助更好! :) – BigBlueHat