【发布时间】:2020-12-15 22:44:38
【问题描述】:
我需要更新一个通过 curl 传入一些参数的工作的 shell 脚本,像这样
curl -X POST -H 'Content-Type: application/json' "http://myurl?param1=test1¶m2=test2¶m3=test3"
一切正常,但问题是我的 API 需要第四个参数,而不仅仅是一个字符串,它是我们 API 中定义的 Java 对象。有什么我可以用shell脚本来管理的吗?感谢任何帮助。我对 Java 还很陌生,所以我有点挣扎。
【问题讨论】:
-
UNIX 命令的参数只能是 C 字符串(也就是说,以 NUL 结尾的字符串),无论您通过什么语言调用它们。 URL 也是字符串。
-
...所以这个 Java 对象需要被序列化为字符串才能被传递。您正在调用的 API 的文档应该描述您需要的任何类型的序列化(无论是对 JSON 的某种编组,还是传递在服务器端用于查找对象的标识符,或者可能是其他任何东西) .
-
因此,首先要开始阅读 API 的文档并弄清楚它需要什么;只有在您做出决定后,您才能提出我们需要帮助您的具体问题。 (如果 API 是您自己编写的,那么您的工作就是反序列化返回到对象中的数据,或者在商店中查找该对象,或者采取任何其他适当的操作;在做出设计决策时要注意并非所有序列化格式都旨在安全处理不受信任的数据)。
-
此 API 是否有任何预先存在的客户端?一个好的起点是看看他们做了什么。例如,如果有一个基于浏览器的客户端,请使用浏览器的内置调试器查看它向服务器发送的参数,您将能够看到它如何以字符串形式表示手头的数据。跨度>