Я пытаюсь настроить SvelteKit для использования с моей CMS.

Я получаю данные из своей CMS в api/query.js и получаю данные из api/query в index.svelte.

Он отлично работает, и я могу получить все данные, но получаю сообщение об ошибке «Не удается прочитать свойство 'split' of undefined», если я включаю тело в запрос на выборку. Код:

// api/query.js
export async function post(req) {
  const url = API_URL;
  const auth = Buffer.from(`${API_USER_EMAIL}:${API_USER_PASSWORD}`).toString('base64');

  const res = await fetch(url, {
    method: 'POST',
    headers: {
      'Authorization': `Basic ${auth}`,
    },
    body: JSON.stringify(req.body),
  });
  const data = await res.json();

  return {
    status: data.code,
    body: data
  }
}
// index.svelte
export async function load({ fetch }) {
    const res = await fetch('/api/query', {
        method: 'POST',
        // body: JSON.stringify({
        //  query: 'site.title',
        // }),
    });
    const data = await res.json();

    return {
        status: data.status || 200,
        props: data
    }
}

Закомментированная часть кода вызывает ошибку. Если я console.log(req.body) в api/query.js, он возвращает undefined.

Есть ли способ использовать парсер тела Express.js? Или есть другой способ исправить эту ошибку?

3
ytrewq 16 Май 2021 в 20:21

1 ответ

Лучший ответ

Установите заголовок content-type для обоих маршрутов.

Также убедитесь, что все ключи заголовка написаны в нижнем регистре.

Примере:

...
    headers: {
        'authorization': `Basic ${auth}`,
        'content-type': 'application/json'
    },
...
0
phaleth 18 Май 2021 в 17:43