Ошибки POST-запроса при работе CURL - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь использовать работника cloudflare (вставлено ниже) для отправки SMS-сообщения через Twilio API. Запрос CURL (также вставленный ниже) Я основываю работника на работе.

Исходя из ошибки 400 от работника, тело сообщения не передается правильно {"code": 21602, "message": "Message body is required.", "more_info": "https://www.twilio.com/docs/errors/21602", "status": 400}

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

Я также посмотрел пример POST-запроса в галерее шаблонов и не вижу причины сбоя. https://developers.cloudflare.com/workers/templates/pages/post_json/

Что мне нужно изменить в своем рабочем коде, чтобы заставить работать запрос POST?

Примечание: я понимаю, что не должен вставлять токен Twilio Auth в тело, но я Поверну ключ позже.

async function handleRequest(request) {
  const init = {
    body: JSON.stringify(body),
    method: 'POST',
    headers: {
      'content-type': 'application/json',
      'Authorization': "Basic " + btoa('[account id]:[Authtoken]'),
    },
  }

  return await fetch(url, init)
}

addEventListener('fetch', event => {
  return event.respondWith(handleRequest(event.request))
})

const url = 'https://api.twilio.com/2010-04-01/Accounts/[Account id]/Messages.json'
const body = {
  Body:"Hello World",
  From:"+[some number]",
  To:"+[some number]]",
}
curl 'https://api.twilio.com/2010-04-01/Accounts/[Account id]/Messages.json' -X POST \
--data-urlencode 'To=+[some number]' \
--data-urlencode 'From=+[some number]' \
--data-urlencode 'Body=Hello World' \
-u [account id]:[auth token]

1 Ответ

0 голосов
/ 29 февраля 2020

, поскольку Twilio требуется application/x-www-form-urlencoded.

REST API: ваш запрос

Создание или обновление ресурса включает выполнение HTTP PUT или HTTP POST для URI ресурса. В PUT или POST вы представляете свойства объекта, который вы хотите sh обновить, в виде пар ключей / значений в форме urlencoded. Не беспокойтесь, браузеры по умолчанию уже кодируют POST. Но обязательно задавайте заголовок HTTP Content-Type для «application / x- www-form-urlencoded» для ваших запросов, если вы пишете свой собственный клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...