在curl中使用-d POST多个文件

问题描述 投票:0回答:2

我正在使用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脚本吗?如果是这样,你能帮助我 - 我不是一个程序员而且我在没有榜样的情况下挣扎!

提前致谢。

bash curl
2个回答
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文件的列表。

这似乎对Daniel的答案起作用,可能是由于文件的内容。希望如果Daniel的解决方案对他们不起作用,这对其他人有用。


0
投票

您可能不希望将多个-d与JSON数据一起使用,因为curl将多个&连接在一起。如-d / - 数据的手册页中所述:

如果在同一命令行中多次使用这些选项中的任何一个,则指定的数据将与分离&-symbol合并在一起。因此,使用'-d name = daniel -d skill = lousy'会生成一个看起来像'name = daniel&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的命令行中没有位置)

© www.soinside.com 2019 - 2024. All rights reserved.