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