May*_*ain 28 javascript api rest mongodb
我目前正在评估Mongo和CouchDB存储数据点(分析).
在我早期与CouchDB的互动中,我喜欢它的基于JSONP的界面.我可以从纯JavaScript执行所有CRUD操作.只需运行CouchDB并编写一些JavaScript - 无需服务器端组件.
将它与Mongo进行比较时,是否有可用的REST接口?是否有可能纯粹从Mongo的javascript做CRUD?
谢谢!
Tom*_*icz 39
MongoDB没有完整的REST接口,主要是因为服务器使用本机二进制协议来提高效率.您可以在官方文档中找到几个REST包装器:
RESTHeart(Java 8)是MongoDB生态系统的数据REST API服务器部分.RESTHeart使用基于HAL的标准表示格式,通过BSON的严格模式表示支持完整的本机mongodb数据.它为CRUD和数据模型操作提供API,内置身份验证和授权,并且它支持CORS.它易于安装,并且可以使用码头集装箱.RESTHeart也快速而轻巧(大约700 Mb的占用空间和大约200 Mb的RAM使用率).
Sleepy Mongoose(Python)是MongoDB的全功能REST接口,可作为单独的项目使用.
MongoDB Rest(Node.js)是MongoDB的alpha REST接口,它使用MongoDB Node Native驱动程序.
简单的REST接口为方便起见,mongod进程包括一个简单的只读REST接口.对于完整的REST功能,我们建议使用Sleepy.Mongoose等外部工具.
sum*_*hta 23
预览版 MongoDB Atlas Data API也于 2021 年 11 月发布,可通过该公司的Atlas 产品与托管 MongoDB 实例一起使用。它允许您通过标准 HTTPS 接口向 MongoDB 发送复杂的查询和聚合,但目前不建议直接进行客户端访问。
例如,一旦创建了集群并为其启用了数据 API,就可以使用以下请求来插入文档 -
curl --request POST \
'https://data.mongodb-api.com/app/<Unique ID>/endpoint/data/beta/action/insertOne' \
--header 'Content-Type: application/json' \
--header 'Access-Control-Request-Headers: *' \
--header 'api-key: <Data API Key>' \
--data-raw '{
"dataSource": "Cluster0",
"database": "todo",
"collection": "tasks",
"document": {
"status": "open",
"text": "Do the dishes"
}
}'
Run Code Online (Sandbox Code Playgroud)
以及以下进行聚合 -
curl --location --request POST 'https://data.mongodb-api.com/app/<Unique ID>/endpoint/v1/beta/action/aggregate' \
--header 'Content-Type: application/json' \
--header 'Access-Control-Request-Headers: *' \
--header 'api-key:<Data API Key>' \
--data-raw '{
"collection":"movies",
"database":"sample_mflix",
"dataSource": "Cluster0",
"pipeline": [
{
"$search": {
"index": "default",
"text": {
"query": "Brad Pitt",
"path": {
"wilcard": "*"
}
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
API 和 Atlas 都提供免费套餐,只需几分钟即可启动。
全面披露 - 我在 MongoDB, Inc. 工作。
另一种选择(无耻插头)是DrowsyDromedary.
我们开发了Drowsy,因为对Mongo的其他REST选项感到沮丧.即,我们发现:
困倦的猫鼬并不是真正的RESTful.这是一个hacky HTTP接口,不遵循REST约定; 它不使用标准的REST HTTP方法,它不使用URL来正确识别资源......我们还发现限制最大结果数(默认情况下受限制)的选项相当混乱.
mongodb-rest提供了一个合适的REST接口,但是我们发现它很难运行.它会经常死亡,并驱使我们的系统管理员疯狂(谁承认运行node.js服务的经验很少).
该内置REST接口将是巨大的,但它被只读意味着它是对我们的需求大多是无用的.
DrowsyDromedary是为解决上述许多问题而开发的:
bundle
,然后rackup
运行).它也可以在Apache或nginx下轻松部署.编辑
Python Eve是一个很棒的解决方案.我发现它非常易于使用且具有高度可配置性.
Eve是一个专为人类设计的开源Python REST API框架.它允许毫不费力地构建和部署高度可定制的,功能齐全的RESTful Web服务.
Eve由Flask,Redis,Cerberus,Events提供支持,并支持MongoDB和SQL后端[*].
代码库在Python 2.6,2.7,3.3,3.4和PyPy下经过全面测试.
入门很简单:
from eve import Eve
app = Eve()
app.run()
Run Code Online (Sandbox Code Playgroud)
并用作
$ curl -i http://example.com/people
HTTP/1.1 200 OK
Run Code Online (Sandbox Code Playgroud)
REST端点模式可以在设置文件中轻松定义.
原版的
我还没有使用它,但RESTHeart看起来像是对此的回答.
从文档中可以轻松设置和使用.
归档时间: |
|
查看次数: |
41864 次 |
最近记录: |