Apache CouchDB использует HTTP API и (следовательно) может быть использован в качестве статического веб-сервера - по аналогии с Nginx или Apache HTTPD, но с дополнительным преимуществом, что вы можете также использовать представления MapReduce, репликация, и другие биты, которые делают Up 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 версию файла. См. Пример Creating Multiple Attachments в CouchDB Docs.
Вы также можете использовать пользовательский интерфейс администратора для CouchDB, такой как Futon или Fauxton, - доступно по адресу http://localhost:5984/_utils
- оба из которых предлагают функции загрузки файлов. Тем не менее, эти системы потребуют, чтобы документ JSON существовал в первую очередь и вносил PUT
the attachment в базу данных напрямую.
Как только это будет завершена, вы можете настроить virtual host запись в CouchDB (или Cloudant), который указывает на _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 Server обрабатывает его, но CouchDB не позволяет это по умолчанию. В противном случае важно помнить, что все значения «to» относятся к документу дизайна, который содержит ключ 'rewrites', поэтому' 'to": "_show/index.html" ' – BigBlueHat
Я рад за переписывание правила должны быть в отдельных базах данных.Мне действительно нужен полный пример документа для перезаписи, потому что мне не удаётся реализовать частичные фрагменты, показанные в документации. – MattMS
Не могли бы вы объяснить немного больше о том, что вы пытаетесь выполнить? Похоже на то, что вы, возможно, злоупотребляете базами данных и показываете функции. Хотелось бы узнать больше, поэтому я могу помочь лучше! :) – BigBlueHat