node.js - NodeJS cloudinary search API by context
问题描述
我可以使用这个从我的云端获取所有图像/视频的列表
const response = await axios.get('https://api.cloudinary.com/v1_1/cloud_name/resources/image', {
auth: {
username: 'xxx',
password: 'xx'
}
})
但我只想获得具有正确上下文的图像,所以我有两个要搜索的键值对。
{month: "November"}
{year: "2020}
但我似乎无法弄清楚如何从他们的文档中使用它,更重要的是下载他们的小部件以使用我不想使用的小部件,而只是使用 axios。
https://cloudinary.com/documentation/admin_api
它的路线列为
/resources/:resource_type/context/
但是,如果我尝试诸如https://api.cloudinary.com/v1_1/cloud_name/resources/image/context/month=November&year=2020
我收到一个错误
{
"error": {
"message": "Invalid value context for parameter type"
}
}
解决方案
更新 20201117
我发现有一种方法可以使用搜索 API 按多个上下文进行搜索。
您需要使用And
来组合条件。
我已经尝试过了,它有效。
axios.post('https://<API_KEY>:<API_SECRET>@api.cloudinary.com/v1_1/cloud_name/resources/search', {
"expression": "context.month=November AND context.year=2020"
}).then((response) => {
console.log(response.data);
})
原始答案
你可以这样使用。
https://api.cloudinary.com/v1_1/cloud_name/resources/image/context?key=month&value=November
只有一个键值对。
这是一个模板表单文档。
curl https://<API_KEY>:<API_SECRET>@api.cloudinary.com/v1_1/<cloud_name>/resources/video/context?mycontextkey&value=mycontextvalue
但是,在文档中我没有看到Get Resource by Context中有多个键值对。
而在cloudinary的nodejs SDK中。
它只实现了一个键值对,你可以在github中看到它
params.key = key;
if (value != null) {
params.value = value;
}
return call_api("get", uri, params, callback, options);
而且我认为搜索 api 可能会将其存档。
但在search api的表达式字段中,它说。
您可以搜索特定的键值对,或者搜索具有特定键而不管值如何的所有资源,或者具有特定值而不考虑键的所有资源。
所以,是的……搜索 api 中只有一个特定的键值上下文。
但是,如果您仍然想尝试使用搜索 api,您可以使用POST
方法来执行此操作。
axios.post('https://<API_KEY>:<API_SECRET>@api.cloudinary.com/v1_1/cloud_name/resources/search', {
"expression": "context.month=November"
}).then((response) => {
console.log(response.data);
})
我也很困惑为什么在 cloudinary 中没有用于上下文搜索的多个键值对。
然后,我认为您可以转换上下文结构。
原来的:
month=November
year=2020
将其转换为
date=2020-November
然后使用它在GET
Method 中进行上下文搜索。
curl https://api.cloudinary.com/v1_1/cloud_name/resources/image/context?key=date&value=2020-November
或者用这样的方法使用表达式POST
。
axios.post('https://<API_KEY>:<API_SECRET>@api.cloudinary.com/v1_1/cloud_name/resources/search', {
"expression": "context.date=2020-November"
}).then((response) => {
console.log(response.data);
})
推荐阅读
- javascript - 触发函数 stop() 时将 audio.duration 重置为“00:00”
- c# - 如何在 c# 上添加 QuickTest.dll 以实现 UFT 自动化
- python - 将 .CSV 文件中的值导入 Python 脚本
- javascript - 如何使用返回函数显示任何元素
- c# - 使用 ServiceStack 连接到多个 Redis 实例
- azure-cosmosdb - 为什么 Container.CreateItemAsync 有 partitionKey 参数?
- python - 如何对唯一列表使用列表理解?
- nginx - Linkerd 使用 Nginx 入口控制器拆分流量
- android - YYYY 日期格式在一台设备上返回 2021,在另一台设备上返回 2020
- php - 为什么最后一个 h2 标题不显示内容?