我正在使用curl创建几个分类。我已经为许多分类编写了json,它们位于一个文件夹中。我想一次创建所有分类。但是使用curl我一次只能创建一个。我怎么能在一个请求中制作它们?
curl -u admin:admin -H "Content-Type: application/json" -X POST -d @pii.json http://127.0.0.1:21000/api/atlas/v2/types/typedefs
-d的curl手册说“也可以指定多个文件”。我怎样才能做到这一点?我所有的尝试都失败了。
我需要一个bash脚本吗?如果是这样,你能不能帮助我 - 我不是一个程序员而且我没有一个例子而苦苦挣扎!
提前致谢。
答案 0 :(得分:1)
我发现以下内容最终有效:
<fileToUpload.dat xargs -I % curl -X POST -T "{%}" -u admin:admin -H "Content-Type: application/json" http://127.0.0.1:21000/api/atlas/v2/types/typedefs
其中fileToUpload.dat包含.json文件的列表。
这似乎与丹尼尔的答案有关,可能是由于文件的内容。如果丹尼尔的解决方案对他们不起作用,希望这对其他人有用。
答案 1 :(得分:0)
您可能不希望将多个-d
与JSON数据一起使用,因为curl将多个&
连接在一起。如-d / - data:
如果在同一命令中多次使用这些选项中的任何一个 在行中,指定的数据将与a合并在一起 分离&amp; -symbol。因此,使用'-d name = daniel -d skill = lousy'会 生成一个看起来像'name = daniel&amp; skill = lousy'的帖子块。
然而,您可以轻松方便地在stdin上传递几个文件,让curl一次性使用它们:
cat a.json b.json c.json | curl -d@- -u admin:admin -H "Content-Type: application/json" http://127.0.0.1:21000/api/atlas/v2/types/typedefs
(请注意-X POST
在使用-d)的命令行中没有位置
答案 2 :(得分:0)
我需要通过curl上传一个文件夹中的所有* .json文件,然后我编写了这个小脚本。
nfiles=*.json
echo "Enter user:"
read user
echo "Enter password:"
read -s password
for file in $nfiles
do
echo -e "\n----$file----"
curl --user $user:$password -i -X POST "https://foo.bar/foo/bar" -H "Content-Type: application/json" -d "@$file"
done
也许符合您的需求。