#mongo-db #atlas #api-testing #local #connect #data #server

已删除 local-atlas-data-api

本地MongoDB Atlas数据API用于测试

2个版本

0.1.1 2023年8月11日
0.1.0 2023年8月11日

#27#atlas

Apache-2.0

28KB
628

本地MongoDB Atlas数据API

一个为测试用途提供MongoDB Atlas数据API的小型服务器。使用TCP连接到MongoDB,并提供了HTTP API,当TCP不可用时可能很有用。

请勿在生产环境中使用,跳过除了我们在CI中可能需要的一切。非常不安全,可能会破坏一切。

用法

Usage: local-atlas-data-api [OPTIONS] --mongodb-url <MONGODB_URL>

Options:
      --hostname <HOSTNAME>        [default: 127.0.0.1]
      --port <PORT>                [default: 3000]
      --mongodb-url <MONGODB_URL>  
  -h, --help                       Print help
  -V, --version                    Print version

要连接到MongoDB实例,将URL作为参数传递给API

> local-atlas-data-api --mongodb-url "mongodb://grafbase:grafbase@localhost:27018"

这将连接到提供的docker-compose文件中定义的MongoDB。当服务运行时(默认地址为http:/127.0.0.1:3000),您可以开始向它发送请求。

查找一个

官方文档

> curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/findOne' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "projection": { "_id": 1, "foo": 1 },
      "filter": { "_id": { "$oid": "64d50a0b967f134bfb3fb620" } }
  }'

查找

官方文档

> curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/find' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "projection": { "_id": 1, "foo": 1 },
      "filter": { "foo": { "$eq": "lol" } }
  }'

插入一个

官方文档

> curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/insertOne' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "document": { "foo": "lol" }
  }'

插入多个

官方文档

> curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/insertMany' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "documents": [{ "foo": "bar" }, { "foo": "lolbar" }]
  }'

更新一个

官方文档

> curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/updateOne' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "filter": { "_id": { "$eq": { "$oid": "64d5dda2154ceb5e6cfdf94e" } } },
      "update": { "$set": { "foo": "musti" } }
  }'

更新多个

官方文档

> curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/updateMany' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "filter": { "foo": { "$eq": "lol" } },
      "update": { "$set": { "foo": "rofl" } }
  }'

删除一个

官方文档

curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/deleteOne' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "filter": { "_id": { "$oid": "64d50a0b967f134bfb3fb620" } }
  }'

删除多个

官方文档

curl --request POST \
  'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/deleteMany' \
  --header 'apiKey: TEST' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
      "dataSource": "grafbase",
      "database": "test",
      "collection": "test",
      "filter": { "foo": { "$eq": "rofl" } }
  }'

聚合

官方文档

我们实际上并不需要这个(目前)。它已在此服务中实现,但未进行测试。

依赖关系

~29–41MB
~756K SLoC