卷曲后JSON数据,JSON阵列和图像文件REST API测试(cURL post json dat

2019-10-24 00:23发布

我现在面临通过卷曲复杂的http请求的问题。 我建立REST API使用的NodeJS,使用快速路由器和Multer中间件处理多个身体数据和文件。

我的端点路由127.0.0.1/api/postData预计:与字段JSON数据,其中之一是JSON对象(我具有嵌套猫鼬模式)和2幅命名为图像(PNG / JPG)的阵列。

我需要通过卷曲到发送请求后用以下的5对象数据结构:

name  String
description String
usersArray  Array of json objects like:   [{"id": "123"}, {"id": "456}]
imgIcon  Png/Image    providing  /path/to/imageIcon.png
imgHeader Png/Image     providing /path/to/imageHeader.png

我读过很多关于计算器线程的,但所有的人都回答特定问题奇异,一个线程约卷曲后的图像,另一卷曲后阵列,但并不完全。

我试过REST API测试工具,如邮递员,DHC(谷歌浏览器),并有一切都很好,除了arraysArray场我喜欢用的字段:
usersArray [0] { “ID”: “123”} usersArray [1] { “ID”: “456”}
但验证没有通过辩论,因为JSON对象值将被解析莫名其妙不正确。

所以我决定把一切都放在卷曲脚本。

我试着写我在下面的方式卷曲的要求:

   #!/bin/bash
   curl -H 'Content-Type: application/json'
  -H 'Accept: application/json'  -X POST 
-F "name=Foo Name Test" 
--data '[{"id": "a667cc8f-42cf-438a-b9d8-7515438a9ac1"}, {"id": "7c7960fb-eeb9-4cbf-9838-bcb6bc9a3878"}]' 
-F "description=Super Bar" 
-F "imgIcon=@/home/username/Pictures/imgIcon.png" 
-F "imgHeader=@/home/username/Pictures/imgHeader.png" http://127.0.0.1:7777/api/postData

当我运行我的脚本cUrl作者在bash ./postData

我得到这个:$警告:你只能选择一个HTTP请求!

你可以帮助:

1)任何想法如何写在卷曲这样一个复杂的HTTP请求REST

2)或用工具建议(如DHC,邮差)来解决这个复杂的http请求。

3)或任何想法如何编写一个带request.js节点HTTP请求库的帮助这个请求。

谢谢大家提前对所有的答案,想法和创意!

问候,JJ

Answer 1:

您可以尝试邮差或Google Chrome分机应用的REST API测试DHC。 但是,你应该使用,而不是使用JSON对象作为一个值,可以验证过程中造成问题多维数组。

在DHC试试这个:

|FIELD|            |VALUE|
name               'Some name'
description        'Some description'
usersArray[0][id]  89a7df9
usersArray[1][id]  dskf28f
imgIcon            (select type of field "file" and upload image)
imgHeader          (select type of field "file" and upload image)

它的工作原理上面的方法是:usersArray [0] [ID]指定在位置0的对象{}与您在值部sepcify键“id”和值多维数组和场所。

所以usersArray [0] [ID] “123” 创建[{ “ID”:123}] usersArray [1] [ID] “456” 增加了另一个元件阵列,所以阵列变为:[{ “ID”: “123” },{ “id为”: “456”}]



Answer 2:

有时你会想使用shell +卷曲,使RESTAPI接电话,你可能要复杂的JSON传递数据。 而如果你想使用的变量并创建在执行期间的数据,你可能最终会使用大量的转义字符()和代码看起来丑陋。 我在做同样的事情也时,Windows PowerShell有字典转换方法|关联数组JSON这确实有助于在该领域,但看起来类似的东西,但没有发现任何东西。 所以这是一个示例代码,将有助于:

#!/bin/Bash
# Author Jayan@localhost.com

## Variable Declaration
email="jayan@localhost.com"
password="VerySecurePassword"
department="Department X"

## Create JSON using variables in Bash
creds="{^email^:^${email}^, ^password^:^${password}^}"
department="{^department^:^${department}^}"
authdata_crippled="{^Authenticate^:[${creds},${department}]}"
# Replace ^ with "
authdata_json_for_RestAPI_Call=$(echo ${authdata_crippled}|tr '^' '"')

# Testing syntax
# Get "jq": yum install jq OR https://stedolan.github.io/jq/
echo ${authdata_json_for_RestAPI_Call} | jq .

# Then you make API call using curl
# Eg:
curl http://hostname:port/right/endpoint/for/api/Authenticate -X POST --header "Content-Type:application/json" -d ${authdata_json_for_RestAPI_Call} --cookie-jar cookie.data

希望这可以帮助别人。



文章来源: cURL post json data, json array and image files REST api testing