2个版本
0.1.1 | 2023年8月11日 |
---|---|
0.1.0 | 2023年8月11日 |
#27 在 #atlas
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