#node.js #express
Вопрос:
Я создал очень простой API на основе двух файлов следующим образом:
api.js
import express from 'express'; const app = express(); import { getWhereToApi} from './lib/handlers.js'; const port = 3000; app.get('/api/vacations', getWhereToApi); app.listen(port, function() { console.log(`Express started in ${app.get('env')} ` `mode on http://127.0.0.1:${port}` `; press Ctrl-C to terminate.`)});
handlers.js
var whereTo = { "GRU": { "destinations": ["MAD", "LAX", "MEX"],}, "LAX": { "destinations": ["NYC", "GRU", "MEX"],}, "NYC": { "destinations": ["LAX"],}, } export async function getWhereToApi(req, res, iata){ res.json(whereTo[iata]); }
Я хочу каким-то образом передать IATA как var (например, «GRU»), чтобы я получил следующий результат:
{ "destinations": [ "MAD", "LAX", "MEX" ] }
Как я могу это сделать? Спасибо!
Комментарии:
1. Откуда вы ожидаете получить эту
iata
ценность? В том виде, в каком вы его настроили сейчас, вы ожидаете, что Express предоставит его при вызове обработчика маршрута, но этого не произойдет так, как вы это показываете. Откуда он должен был взяться? Вы хотите, чтобы это было в URL-адресе? Если да, покажите, как вы этого хотите, в URL-адресе?2. Спасибо за комментарий. Например, из строки запроса? 127.0.0.1:3000/api/каникулы?iata=GRU
Ответ №1:
Если вы хотите поместить данные в строку запроса, как в:
http://127.0.0.1:3000/api/vacations?iata=GRU
Тогда значение будет в req.query
.
export function getWhereToApi(req, res){ const iata = req.query.iata; const data = whereTo[iata]; if (data) { res.json(data); } else { res.sendStatus(404); // value not found } }
Ответ №2:
@Bob, исходя из варианта использования, вы можете ожидать iata
от параметров API. В handlers.js файл в функции getWhereToApi() вы можете извлечь его const iata = req.params.iata;
следующим образом
export async function getWhereToApi(req, res){ const iata = req.params.iata res.json(whereTo[iata]); }
Я думаю об этом как о самом простом способе.