Отправка POST-запроса с массивом в теле с помощью HTTParty - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать новых подписчиков через API Buttondown.

Документы здесь .

API ожидает следующее тело:

{
  "email": "string",
  "notes": "string",
  "referrer_url": "string",
  "tags": [
    "string"
  ]
}

Поле электронной почты является обязательным, а все остальные необязательными.

Я могу успешно создать нового подписчика. Однако я не могу добавить какие-либо теги.

Я уже создал тег с именем «marketing» и подтвердил, что он существует.

Я создаю нового подписчика, например:

  body = {
    'email': params[:email],
    'referrer_url': params[:referer],
    'tags': ['marketing']
  }

  res = HTTParty.post(
          'https://api.buttondown.email/v1/subscribers', 
          body: body,
          headers: headers
        )

Я ожидаю, что вышеизложенное создаст нового подписчика с тегом marketing . Но, глядя на ответ, тег не попал в запись.

{
  "creation_date"=>"2020-04-22T16:06:22.114523Z",
   "email"=>"user@example.com",
   "id"=>"********-****-****-****-************",
   "notes"=>"",
   "referrer_url"=>"http://localhost:3000/",
   "metadata"=>{},
   "secondary_id"=>18,
   "subscriber_type"=>"regular",
   "source"=>"api",
   "tags"=>[],
   "utm_campaign"=>"",
   "utm_medium"=>"",
   "utm_source"=>""
}

Правильно ли я отправляю массив? Я правильно делаю свой запрос POST? Есть ли в документации по Buttondown что-то, что я не правильно отправляю тег?

1 Ответ

0 голосов
/ 22 апреля 2020

Поскольку spickermann произносит комментарий, мне нужно было указать тип содержимого в заголовках и вызвать to_json в теле.

    headers = {
      ...
      'Content-Type' => 'application/json'
    }
    res = HTTParty.post(
      'https://api.buttondown.email/v1/subscribers', 
      body: body.to_json,
      headers: headers
    )
...