source

MongoDB에는 기본 REST 인터페이스가 있습니까?

nicesource 2023. 5. 4. 20:03
반응형

MongoDB에는 기본 REST 인터페이스가 있습니까?

현재 Mongo와 CouchDB의 데이터 포인트 저장(분석)을 검토하고 있습니다.

CouchDB와 이전에 교류했을 때, 저는 그것의 JSONP 기반 인터페이스를 사랑했습니다.저는 순수 자바스크립트에서 모든 CRUD 작업을 수행할 수 있었습니다.CouchDB를 실행하고 JavaScript를 작성하기만 하면 됩니다. 서버 측 구성요소가 필요하지 않습니다.

이것을 Mongo와 비교했을 때, 사용 가능한 REST 인터페이스가 있습니까?Mongo에서 javascript로만 CRUD를 할 수 있습니까?

감사합니다!

서버가 효율성을 위해 네이티브 이진 프로토콜을 사용하기 때문에 MongoDB에 대한 완전한 REST 인터페이스는 없습니다.공식 문서에서 몇 가지 REST 래퍼를 찾을 수 있습니다(편집: MongoDB inc가 이 정보를 삭제했습니다).

  • RESTHeart(Java 8)는 MongoDB 생태계의 데이터 REST API 서버입니다.RESTHeart는 BSON의 엄격한 모드 표현을 통해 완전한 네이티브 mongodb 데이터 지원과 함께 HAL 기반의 표준 표현 형식을 사용합니다.CRUD 및 데이터 모델 운영, 내장 인증 및 권한 부여를 위한 API를 제공하며 CORS를 지원합니다.설정이 쉽고 도커 컨테이너를 사용할 수 있습니다.RESTHeart는 또한 빠르고 가볍습니다(최대 7Mb의 설치 공간 및 최대 200Mb의 RAM 피크 사용).
  • Sleepy Mongoose(Python)는 MongoDB를 위한 완전한 기능을 갖춘 REST 인터페이스로, 별도의 프로젝트로 이용할 수 있습니다.
  • Node.js에 대해 Mongo에 의존합니다.이전 MongoDB Rest는 더 이상 유지 관리되지 않습니다.
  • 단순 REST 인터페이스 몽고드 프로세스에는 편의를 위해 간단한 읽기 전용 REST 인터페이스가 포함되어 있습니다.전체 REST 기능을 사용하려면 Sleepy와 같은 외부 도구를 사용하는 것이 좋습니다.몽구스.

또한 2021년 11월에 회사의 Atlas 오퍼링을 통해 호스팅된 MongoDB 인스턴스와 함께 사용할 수 있도록 MongoDB Atlas Data API in Preview도 출시되었습니다.이 기능을 사용하면 표준 HTTPS 인터페이스를 통해 복잡한 쿼리 및 집계를 MongoDB로 전송할 수 있지만 현재는 직접 클라이언트 측 액세스에 권장되지 않습니다.

예를 들어, 클러스터가 생성되고 Data 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"
      }
  }'

다음을 수행하여 집계를 수행합니다.

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": "*"
        }
      }
    }
  }
]
}

API와 Atlas는 모두 무료 계층을 제공하며 스핀 업에 몇 분밖에 걸리지 않습니다.

전체 공개 - 저는 MongoDB, Inc.에서 일합니다.

또 다른 옵션(뻔뻔한 플러그)은 Doily Dromedary입니다.

우리는 Mongo의 다른 REST 옵션에 대한 불만으로 Doily를 개발했습니다.즉, 다음과 같은 것을 발견했습니다.

졸린 몽구스는 정말 휴식이 되지 않습니다.REST 규약을 따르지 않는 해키한 HTTP 인터페이스입니다. 표준 REST HTTP 메서드를 사용하지 않고 URL을 사용하여 리소스를 제대로 식별하지 못합니다.또한 최대 결과 수를 제한하는 옵션(기본적으로 제한됨)이 다소 혼란스러운 것으로 나타났습니다.

mongodb-rest는 적절한 REST 인터페이스를 제공하지만, 우리는 그것이 달리기에 골치 아픈 것이라는 것을 발견했습니다.그것은 정기적으로 중단될 것이고, 우리의 sysadmin을 미치게 할 것입니다(인정하건대 node.js 서비스를 실행한 경험이 거의 없습니다).

내장된 REST 인터페이스는 훌륭했지만 읽기 전용이라는 것은 우리의 필요에 대부분 쓸모가 없다는 것을 의미합니다.

Dleepy Dromedary는 위의 많은 문제를 해결하기 위해 개발되었습니다.

  1. 표준 HTTP 동사(GET, POST, PUT, DELETE, PATCH)를 지원하는 기존 REST 인터페이스를 제공합니다.
  2. 배포가 , bundler,).bundle,그리고 나서.rackup그리고 당신은 달리고 있습니다).또한 Apache 또는 nginx에서 쉽게 배포할 수 있습니다.

편집

Python Eve는 이를 위한 환상적인 솔루션입니다.사용하기 쉽고 구성이 용이하다는 것을 알게 되었습니다.

이브는 인간을 위해 설계된 오픈 소스 Python REST API 프레임워크입니다.사용자 지정이 가능하고 완벽한 기능을 갖춘 RESTful 웹 서비스를 쉽게 구축하고 배포할 수 있습니다.

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는 이것에 대한 답처럼 보입니다.

설명서를 보면 설정 및 사용이 쉬워 보입니다.

액티베 유닛(github repo)의 mongodb-rest의 포크는 내가 본 mongodb에 대한 가장 빠르고 기능이 풍부한 rest 인터페이스 중 하나입니다.

저는 그것을 강력히 추천합니다.

사실 그렇지 않아요.mongod 프로세스에는 편의를 위해 간단한 읽기 전용 REST 인터페이스가 포함되어 있습니다.전체 REST 기능을 사용하려면 Sleepy와 같은 외부 도구를 사용해야 합니다.몽구스.

RESTHeart는 MongoDB 생태계의 새로운 데이터 REST API 서버 부분입니다.

CRUD 및 데이터 모델 운영, 내장 인증 및 권한 부여를 위한 API를 제공하며 CORS를 지원합니다.

BSON의 엄격한 모드 표현을 통해 네이티브 mongodb 데이터 형식을 완벽하게 지원하는 HAL+json 기반표준 표현 형식을 사용합니다.

설정이 쉽고 도커 컨테이너를 사용할 수 있습니다.

RESTHeart는 빠르고(성능 테스트 결과 참조) 경량입니다(최대 7Mb 설치 공간 및 최대 200Mb RAM 피크 사용).

아니요. 하지만 몽고드브레스트는 앞으로 나아가고 있습니다.

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

언급URL : https://stackoverflow.com/questions/7386740/does-mongodb-have-a-native-rest-interface

반응형