web-dev-qa-db-ja.com

MongoDBにはネイティブRESTインターフェイスがありますか?

現在、MongoとCouchDBでデータポイント(分析)の保存を評価しています。

CouchDBとの以前のやり取りで、JSONPベースのインターフェースが大好きでした。純粋にJavaScriptからすべてのCRUD操作を実行できました。 CouchDBを実行してJavaScriptを記述するだけです。サーバー側のコンポーネントは必要ありません。

これをMongoと比較する場合、RESTインターフェースが利用可能ですか?Mongoのjavascriptから純粋にCRUDを実行することは可能ですか?

ありがとう!

27
Mayank Jain

主にサーバーが効率のためにネイティブバイナリプロトコルを使用しているため、本格的なRESTインターフェースはありません。公式にいくつかのRESTラッパーがあります。 ドキュメント

  • RESTHeart (Java 8)は、データですREST MongoDBエコシステムのAPIサーバー部分です。RESTHeartは、HALに基づく標準表現形式を使用し、ネイティブmongodbデータを完全にサポートしています。 BSONのストリクトモード表現。CRUDおよびデータモデル操作、組み込みの認証と承認のためのAPIを提供し、CORSをサポートします。セットアップが簡単で、Dockerコンテナを使用できます。フットプリントと〜200 Mb RAMピーク使用量)。

  • Sleepy Mongoose (Python)は、フル機能のREST別のプロジェクトとして利用可能なMongoDBのインターフェイスです。

  • MongoDB Rest (Node.js)はalphaREST MongoDBへのインターフェース、 MongoDB Node Nativeドライバーを使用します。

  • Simple REST Interface mongodプロセスには、簡単な読み取り専用RESTインターフェースが含まれています。完全なREST機能 Sleepy.Mongoose などの外部ツールを使用することをお勧めします。

38

別のオプション(恥知らずなプラグ)はDrowsyDromedaryです。

Drowsyは、他のREST Mongoのオプションとのフラストレーションから開発されました。つまり、次のことがわかりました。

Sleepy Mongooseは実際にはRESTfulではありません。これはRESTの慣習に従わない、ハックの多いHTTPインターフェースです。標準のREST HTTPメソッドを使用せず、適切に識別するためにURLを使用しませんリソース...結果の最大数を制限するオプション(デフォルトでは制限されています)もかなりわかりにくいことがわかりました。

mongodb-restは、適切なRESTインターフェースを提供しますが、実行するのが苦痛であることがわかりました。それは定期的に死に、sysadminの狂気(確かにnode.jsサービスの実行経験がほとんどない)を駆り立てます。

ビルトインREST interfaceは素晴らしかっただろうが、読み取り専用であることはほとんど役に立たないニーズ。

DrowsyDromedaryは、上記の問題の多くに対処するために開発されました。

  1. 標準のHTTP動詞(GET、POST、PUT、DELETE、PATCH)をサポートする従来のRESTインターフェイスを提供します。
  2. インストールとデプロイは非常に簡単です(githubからクローンを作成し、Bundlerをインストールし、bundleを実行してからrackupを実行します)。また、Apacheまたはnginxで簡単に展開できます。
7
Matt Zukowski

編集

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()

として使用する

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

RESTエンドポイントスキーマは、設定ファイルで簡単に定義できます。

オリジナル

まだ使用していませんが、 RESTHeart はこれに対する答えのように見えます。

ドキュメントからは、セットアップと使用が簡単に見えます。

5
Harry

actibeUnitsによるmongodb-restのフォーク( github repo )は、私が見たmongodbへの最速で最も機能が豊富な休息インターフェースの1つです。

私はそれを強くお勧めします。

2
Mayank Jain

RESTHeart は、新しいデータREST MongoDBエコシステムのAPIサーバー部分です。

[〜#〜] api [〜#〜] を提供し、CRUDとデータモデルの操作、組み込みの認証と承認をサポートし、 [〜#〜] cors [〜#〜]をサポートします。

標準の 表現形式 に基づいています HAL + json に基づいており、BSONの厳密モード表現を介してネイティブmongodbデータ形式を完全にサポートしています。

setup および docker container を使用するのは簡単です。

RESTHeartは高速( パフォーマンステスト結果 を参照)で軽量です(〜7 Mbフットプリントおよび〜200 Mb RAMピーク使用量)。

1

あんまり。 mongodプロセスには、 簡単な読み取り専用RESTインターフェイス 便宜上あります。完全なREST機能には、外部ツールを使用する必要がありますSleepy.Mongooseなど。

1
Thilo

いいえ。しかし、mongodb-restは現在前進しています。

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

0
Ashley Davis