Как в Nuxt3 в методе useFetch передать массив в качестве параметра?

Как можно обойти проблему с тем, что при использовании Nuxt 3 в useFetch параметры всегда приводятся к строке, а API ожидает параметр в виде массива?
  • 7 декабря 2023 г. 11:19
Ответы на вопрос 2
В Nuxt 3 можно передать массив в качестве параметра в методе useFetch, используя кастомное определение параметра. 

Для этого вы можете использовать оператор расширения для замены ключей объекта на начало имени параметра с квадратными скобками. Например, если вместо массива вы получаете строку параметров "param1,param2,param3", вы можете преобразовать ее в массив путем стандартной строки разделения и дальнейшего использования оператора расширения.

Пример:

```javascript
const response = await useFetch({
  async setup(params) {
    const paramArray = params.params.split(',');

    const data = await fetch('your-api-url', {
      method: 'POST',
      body: JSON.stringify({
        arrayParam: [...paramArray],
      }),
    });

    return {
      data,
    };
  },
});
```

Обратите внимание, что в параметре `body` мы используем оператор расширения `[...paramArray]`, чтобы передать массив параметров в API. Вам нужно будет заменить `'your-api-url'` на свой URL API и адаптировать этот пример под ваши нужды.

Теперь вы можете передать параметр в виде строки, разделенной запятыми, и он будет преобразован в массив при вызове API.
Помогло использовать просто $fetch вместо useFetch (но мне повезло, что в моём случае запрос требуется только на клиенте, поскольку $fetch только на клиенте и работает)
Похожие вопросы