#reactjs #typescript #web-deployment #web-development-server
#reactjs #машинописный текст #веб-развертывание #веб-разработка-сервер
Вопрос:
У меня есть приложение react / typescript, состоящее из клиента и сервера. Клиент запрашивает у сервера некоторые данные и продолжает показывать их с помощью React.
На стороне клиента при запросе данных я делаю:
export const createApiClient = (): ApiClient => {
return {
getTickets: () =>
return axios.get(APIRootPath).then((res) => res.data);
}
}
}
На стороне сервера, отправляя данные, я делаю:
app.get(APIPath, (req, res) => { // @ts-ignore
const page: number = req.query.page || 1;
const paginatedData = tempData.slice((page - 1) * PAGE_SIZE, page * PAGE_SIZE);
res.send(paginatedData);
});
Теперь меня попросили сделать следующее:
- Добавьте параметр запроса ?search= в вызов API /tickets и реализуйте его на стороне сервера.
- Подключите панель поиска на стороне клиента к этому вызову API
Я понимаю, что сервер, прежде чем отправлять данные обратно, должен отфильтровать их по некоторой строке 'x'
, которая вводится в строке поиска.
Чего я не понимаю из этого вопроса (и поскольку я вообще не знаком с веб-разработкой), так это как сервер должен получать эту строку.
Предполагая, что я уже смог подключить панель поиска таким образом, чтобы отображался ввод по URL-адресу. Как мне отправить этот параметр на сервер? Должен ли я вообще его отправлять? Или я должен иметь возможность с сервера самостоятельно извлекать параметр?
Спасибо за помощь
Комментарии:
1. Параметр должен быть добавлен к URL-адресу перед отправкой запроса (с помощью axios). Итак, в обработчике кнопки, которая запускает поиск, вы должны выполнить триггерный запрос с добавлением параметра поиска к URL. Затем этот параметр будет доступен
req.query.search
на сервере. Вероятно, вашgetTickets
метод должен принимать параметрsearch
, который он добавляет в качестве параметра запроса к URL-адресу, если он присутствует.
Ответ №1:
Вам не нужно показывать URL-адрес запроса в строке браузера. Для меня неясно, предполагается ли реализовать динамический поиск, при котором вы запрашиваете у сервера новые результаты, когда пользователь вводит символы, или вам нужно, чтобы пользователь вводил всю строку поиска, а затем запрашивал у вашего API ответ.
В любом случае, единственное, что меняется, — это событие запуска: в первом случае, предполагая, что вы используете входной тег, вам нужно использовать свойства onChange для вызова вашей функции из вашего jsx таким образом:
<input type="text" [...] onChange={yourFunction} />
Вам также может потребоваться изменить вызов API, чтобы передать параметры вашего запроса во что-то вроде:
return axios.get(APIRootPath, { params: { param1: 42, param2: "some string").then((res) => res.data);
Во второй гипотезе у вас может быть кнопка, которая использует событие onClick для запуска той же процедуры