2个版本
0.1.3 | 2023年8月11日 |
---|---|
0.1.2 | 2023年8月11日 |
#1830 在 数据库接口
31KB
695 代码行
MongoDB Atlas数据API
一个小型服务器,用于提供MongoDB Atlas数据API的测试用途。使用TCP连接到MongoDB,并提供了HTTP API,这可能在没有TCP的情况下很有用。
请勿在生产环境中使用,跳过除了我们在CI中可能需要的一切。非常不安全,可能破坏一切。
用法
Usage: mongodb-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
> mongodb-data-api --mongodb-url "mongodb://grafbase:grafbase@localhost:27018"
这连接到在提供的docker-compose文件中定义的MongoDB。当服务运行时(默认地址为http:/127.0.0.1:3000),您可以开始向它发送请求。
Docker
仓库包含一个示例docker-compose文件,用于与本地MongoDB一起使用API。映像可以在Docker Hub找到。
查找一个
> 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" } }
}'
聚合
我们目前真的不需要这个(还)。它在这个服务中已实现,但尚未测试。
删除数据库
这是一个非官方命令,但在测试运行后清理时很有用。删除请求中定义的数据库。
> curl --request POST \
'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/dropDatabase' \
--header 'apiKey: TEST' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
"dataSource": "grafbase",
"database": "test"
}'
依赖项
~29–41MB
~752K SLoC