Как мне преобразовать эту команду curl в Ruby rest-client? - PullRequest
1 голос
/ 16 марта 2019

У меня есть эта curl команда, которую нужно преобразовать в PUT запрос

curl https://example.com/api/v2/students/id.json \
  -d '{"student":{"description":{"body":"Adding a new test description"}}}' \
  -H "Content-Type: application/json" \
  -v -u test@gmail.com:Abcd1234 \
  -X PUT

Trial

Я пробовал PUT , но это не работает.Не выдает никакой ошибки, но не добавляет описание.

put(
     "https://example.com/api/v2/students/id.json",
     {:student => {:description  => {:body => 'Adding a new test description.'}}},
     { 'Authorization' => "Basic #{authorization_token}" }
     )

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

В вашем примере curl вы указали тело в виде строки (в формате JSON):

curl ... \
  -d '{"student":{"description":{"body":"Adding a new test description"}}}' \
  ...

Прямой эквивалент в rest-client также будет использовать строку (в формате JSON):

put( ...,
  '{"student":{"description":{"body":"Adding a new test description"}}}',
  ...
)

В соответствии с README :

rest-client не говорит непосредственно в JSON, поэтому сериализуйте свою полезную нагрузку в строку перед передачей ее rest-client.


Вы можете использовать журнал rest-client, чтобы показать фактический отправленный HTTP-запрос и сравнить его с тем, что отправляет curl.

0 голосов
/ 17 марта 2019
curl https://example.com/api/v2/students/id.json \
  -d '{"student":{"description":{"body":"Adding a new test description"}}}' \
  -H "Content-Type: application/json" \
  -v -u test@gmail.com:Abcd1234 \
  -X PUT

использование

put(
     "https://test%40gmail.com:Abcd1234@example.com/api/v2/students/id.json",
     {student: {description: {body: 'Adding a new test description.'}}},
     #{'student': {'description': {'body': 'Adding a new test description.'}}},
     #{:student => {:description  => {:body => 'Adding a new test description.'}}}.to_json,
     {content_type: :json, accept: :json}
)
...