如果可能,我将如何使用PouchDB Server实现以下网址重写?
在/index.html
,显示/index/_design/index/_show/index.html
的HTML输出。
在/my_database/index.html
,显示/my_database/_design/my_database/_show/index.html
。
我的目标是使用PouchDB(最终CouchDB)作为独立的Web服务器。
我正在努力将rewrite documentation翻译成正常工作的代码。
答案 0 :(得分:1)
Apache CouchDB使用HTTP API并且(因此)可以用作静态Web服务器 - 类似于Nginx或Apache HTTPD,但还有额外的好处,您还可以使用MapReduce视图,复制,以及构成Apache CouchDB的其他部分。
只有核心API,您可以将整个静态站点作为附件存储在单个JSON文档中,并从其自己的URL提供每个文件。如果该单个文档是_design
文档,那么您将获得重写器的附加值。
这是一个示例 faux 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编码版本。请参阅Creating Multiple Attachments中的CouchDB Docs示例。
您还可以使用CouchDB的管理UI,例如Futon或Fauxton,可在http://localhost:5984/_utils
使用 - 两者都提供文件上传功能。但是,这些系统将要求首先存在JSON文档,并将PUT
the attachment直接存入数据库。
完成后,您可以在CouchDB(或virtual host)中设置Cloudant条目,该条目指向该设计文档中的_rewrite
端点。像这样:
[vhosts]
example.com = /example-com/_design/site/_rewrite/
如果您没有在端口80上托管,那么您需要在http://example.com:5984/
处申请该网站。
只有在您希望将JSON转换为HTML(或不同的JSON,XML,CSV等)时,才需要使用_show
函数(如您的示例所示)。如果您只想要静态托管,那么上面的选项非常有用。 ^ _ ^
还有很棒的工具可用于创建这些文档。 couchapp.py和couchdb-push是我最常使用的,都支持CouchApp filesystem mapping "spec"。
希望有所帮助!