在 CouchDB/PouchDB-Server 中重写 URL
Rewrite URLs in CouchDB/PouchDB-Server
如果可能,我将如何使用 PouchDB Server 实现以下 URL 重写?
在/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 翻译成工作代码。
Apache CouchDB uses an 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 example in the CouchDB Docs.
您还可以使用 CouchDB 的管理员 UI,例如 Futon 或 Fauxton——可在 http://localhost:5984/_utils
获得——它们都提供文件上传功能。但是,这些系统将要求 JSON 文档首先存在,然后 PUT
the attachment 直接进入数据库。
完成后,您可以设置一个 virtual host entry in CouchDB (or Cloudant) 指向该设计文档中的 _rewrite
端点。像这样:
[vhosts]
example.com = /example-com/_design/site/_rewrite/
如果您不在端口 80 上托管,则需要在 http://example.com:5984/
请求站点。
仅当您想要将 JSON 转换为 HTML(或不同的 JSON 时,才需要使用 _show
函数(如您的示例), XML、CSV 等)。如果您只想要静态托管,那么上面的选项非常有效。 ^_^
创建这些文档也有很棒的工具。 couchapp.py and couchdb-push are the ones I use most often and both support the CouchApp filesystem mapping "spec".
希望对您有所帮助!
如果可能,我将如何使用 PouchDB Server 实现以下 URL 重写?
在/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 翻译成工作代码。
Apache CouchDB uses an 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 example in the CouchDB Docs.
您还可以使用 CouchDB 的管理员 UI,例如 Futon 或 Fauxton——可在 http://localhost:5984/_utils
获得——它们都提供文件上传功能。但是,这些系统将要求 JSON 文档首先存在,然后 PUT
the attachment 直接进入数据库。
完成后,您可以设置一个 virtual host entry in CouchDB (or Cloudant) 指向该设计文档中的 _rewrite
端点。像这样:
[vhosts]
example.com = /example-com/_design/site/_rewrite/
如果您不在端口 80 上托管,则需要在 http://example.com:5984/
请求站点。
仅当您想要将 JSON 转换为 HTML(或不同的 JSON 时,才需要使用 _show
函数(如您的示例), XML、CSV 等)。如果您只想要静态托管,那么上面的选项非常有效。 ^_^
创建这些文档也有很棒的工具。 couchapp.py and couchdb-push are the ones I use most often and both support the CouchApp filesystem mapping "spec".
希望对您有所帮助!