下面的curl命令适用于API调用。
curl -k --user "un:$PASSWORD" -X POST -H "内容类型:多部分/混合" -F "blob=@binaryfile" -F 'metadata={"prop1":"v1"," prop2":"v2"};type=application/json' https:///api/v2.0/entity
我怎样才能使用nodejs实现同样的效果?
formData.append('blob', fs.createReadStream(binaryfile))
formData.append('metadata', fs.createReadStream(jsonfile))
const config = {
method: 'POST',
url: 'https://<host>/api/v2.0/entity',
headers: {
'Content-Type': 'multipart/mixed',
'Accept': 'application/json'
},
data: formData
}
return await axios(config).then(function (response) {
return response.data
}).catch(error => {
return error
})
我正在编写此答案,假设您的
jsonfile
变量包含元数据中所需的属性。
您的请求中唯一缺少的是密码。创建一个变量并按如下方式使用它,或者将我对常量的使用替换为您在
.env
文件中声明的值:
const PASSWORD = 'password'; //You could also use env variable
formData.append('blob', fs.createReadStream(binaryfile))
formData.append('metadata', fs.createReadStream(jsonfile))
const config = {
method: 'POST',
url: 'https://<host>/api/v2.0/entity',
headers: {
'Content-Type': 'multipart/mixed',
'Accept': 'application/json'
//Use the Authorization header for your password
'Authorization': 'Basic ${Buffer.from('un:' +
PASSWORD).toString('base64')}'
},
data: formData
}
return await axios(config).then(function (response) {
return response.data
}).catch(error => {
return error
})