Отправка вложенных json данных методом get с помощью axios - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь отправить вложенные json данные методом get с использованием ax ios, но проблема в том, что серверная часть рассматривает дочерние элементы как строку.

const TOKEN = "token"
const config = {
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': TOKEN,
    },
    data: {},
    params: {
        "page_id": 1,
        "filter": {
            "search": "name"
        }
    }
};
axios.get("http://localhost/api/pages", config)

Что я получу, если Я хочу напечатать filter в бэкэнде:

"{"search": "name"}"

Ответы [ 3 ]

3 голосов
/ 05 февраля 2020

У вас может быть два варианта:

1- Первый вариант - декодировать полученную строку в json.

например,

--- json_decode() в php

--- JSONObject() в java

--- JSON.parse() в nodejs

или любым другим способом в зависимости от вашего язык бэкэнда ...

2- Второй вариант - отправить объект в следующем формате:

params: {
    "page_id": 1,
    "filter[search]": "name"
}

И обратить внимание, чтобы не ставить search в кавычки!

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

Сделайте JSON.parse() из ваших Request.query.filter. Обратите внимание, что Запрос должен быть переменной запроса в вашем бэкэнде.

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

Вы можете использовать req.query на стороне сервера:

function get(req, res, next) {
  const { filter } = req.query;
  console.log(filter);
  ...
}
...