Как ОПУБЛИКОВАТЬ составную форму с изображением и объектом JSON, содержащим массив объектов, используя CURL

#arrays #json #shell #curl

#массивы #json #оболочка #завиток

Вопрос:

Я пытаюсь опубликовать следующий объект JSON вместе с данными изображения, используя curl:

 {
  "score_id": "153A6D67",
  "inputs": [{
    "type": "hits",
    "value": "4"
  },{
    "type": "miss",
    "value": "3"
  }]
}
 

Лучшее, чего я добился до сих пор, — это:

 curl --request POST "https://my-server/post-url" 
--header 'Accept: application/json' 
--form "score_id=153A6D67" 
--form 'inputs[]={"type":"hits","value":"4"}; type=application/json' 
--form 'inputs[]={"type":"miss","value":"3"}; type=application/json' 
--form "uploaded_image=@$IMAGE"   # <<< IMPORTANT! this is an image!
 

Серверная реализация, к которой я пытаюсь подключиться, не распознает объекты, отправленные с этим атрибутом inputs .
Есть какие-нибудь идеи, что я делаю не так?

Большое вам спасибо за любое направление.

Ответ №1:

Вы можете попробовать это

 curl --location --request POST 'https://my-server/post-url' 
--header 'Content-Type: application/json' 
--data-raw '{
  "score_id": "153A6D67",
  "inputs": [{
    "type": "hits",
    "value": "4"
  },{
    "type": "miss",
    "value": "3"
  }]
}'
 

Комментарии:

1. Спасибо вам за ваш ответ, но это не позволит использовать форму, состоящую из нескольких частей! Смотрите мою последнюю строку: —форма «uploaded_image=@$IMAGE»

2. Передать строку изображения в формате в кодировке base64

Ответ №2:

Вот как я заставил это работать:

 curl --request POST "https://my-server/post-url" 
--header 'Accept: application/json' 
--form "score_id=153A6D67" 
--form 'inputs[0][type]=hits' 
--form 'inputs[0][value]=4' 
--form 'inputs[1][type]=miss' 
--form 'inputs[1][value]=3' 
--form "uploaded_image=@$IMAGE"