MongoDB是否具有本机REST接口?

时间:2011-09-12 10:52:52

标签: javascript api rest mongodb

我目前正在评估Mongo和CouchDB存储数据点(分析)。

在我之前与CouchDB的互动中,我喜欢它的基于JSONP的界面。我可以从纯JavaScript执行所有CRUD操作。 只需运行CouchDB并编写一些JavaScript - 无需服务器端组件。

将此与Mongo进行比较时,是否有可用的REST界面? 是否可以纯粹从Mongo的javascript中做CRUD?

谢谢!

6 个答案:

答案 0 :(得分:36)

MongoDB没有完整的REST接口,主要是因为服务器使用本机二进制协议来提高效率。您可以在官方documentation中找到几个REST包装器:

  
      
  • RESTHeart(Java 8)是MongoDB生态系统的数据REST API服务器部分。 RESTHeart使用基于HAL的标准表示格式,通过BSON的严格模式表示支持完整的本机mongodb数据。   它为CRUD和数据模型操作提供API,内置身份验证和授权,并且它支持CORS。   它易于安装,并且可以使用码头集装箱。 RESTHeart也快速轻巧(占用大约7 Mb,内存使用约200 Mb)。

  •   
  • Sleepy Mongoose(Python)是MongoDB的全功能REST接口,可作为单独的项目使用。

  •   
  • MongoDB Rest(Node.js)是MongoDB的 alpha REST接口,它使用MongoDB Node Native驱动程序。

  •   
  • Simple REST Interface为方便起见,mongod进程包括一个简单的只读REST接口。对于完整的REST功能,我们建议使用外部工具,例如Sleepy.Mongoose

  •   

答案 1 :(得分:7)

另一种选择(无耻插件)是 DrowsyDromedary

我们开发了Drowsy,因为对Mongo的其他REST选项感到沮丧。即,我们发现:

困倦的猫鼬并不是真正的RESTful。这是一个hacky HTTP接口,不遵循REST约定;它不使用标准的REST HTTP方法,它不使用URL来正确识别资源......我们还发现了限制最大结果数量的选项(默认情况下是受限制的)而非混淆。

mongodb-rest 提供了一个合适的REST界面,但我们发现它很难运行。它会经常死亡,并导致我们的系统管理员疯狂(无可否认,他们在运行node.js服务方面经验不足)。

内置REST界面本来就很棒,但它是只读的意味着它对我们的需求来说几乎没用。

DrowsyDromedary ,旨在解决上述许多问题:

  1. 它提供了传统的REST接口,支持标准HTTP动词(GET,POST,PUT,DELETE,PATCH)。
  2. 安装和部署相当容易(从github克隆,安装捆绑器,运行bundle,然后rackup,然后运行)。它也可以在Apache或nginx下轻松部署。

答案 2 :(得分:5)

修改

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。

开始时很简单:

$ curl -i http://example.com/people
  HTTP/1.1 200 OK

并用作

import numpy as np
import matplotlib.pyplot as plt
T=4.32*10**19
i=input("Number of iterations ")
h=T/i
a=[0.01]*6000
t=[0.0]*6000
data = np.loadtxt('/home/user/t.txt')
t=data[:]
def f (a):
    if a!=0:    
        c=((0.75/a + 0.044/(a**2) + 0.74*(a**2))**0.5)  
        return c
    else :
        return 0

for n in range(0,5998):
    k1=f ( a[n] );
    k2=f ( a[n]+(h/2)*k1 );
    k3=f ( a[n]+(h/2)*k2 );
    k4=f ( a[n]+h*k3 ); 
    a[n+1]=(a[n]+(h/6)*(k1 + 2*k2 + 2*k3 + k4))

fo=open("a_of_t.txt", "w")
for item in a:
    fo.write("%e\n" % item)
fo.close()

plt.plot(t,a, 'k')
plt.show()

可以在设置文件中轻松定义REST端点模式。

<强>原始

我还没有使用它,但RESTHeart看起来像是对此的回答。

从文档中可以轻松设置和使用。

答案 3 :(得分:2)

ActibeUnits(github repo)的mongodb-rest的分支是我见过的最快且功能最丰富的mongodb休息接口之一。

我强烈推荐它。

答案 4 :(得分:1)

不是真的。为方便起见,mongod进程包括a simple read-only REST interface。要获得完整的REST功能,您需要使用外部工具,例如Sleepy.Mongoose。

答案 5 :(得分:0)

没有。但 mongodb-rest 现在正在向前发展。

https://github.com/codecapers/mongodb-rest