#javascript #node.js #routes
Вопрос:
Я новичок в этом деле. Может ли кто-нибудь, пожалуйста, помочь объяснить мне этот синтаксис?
routes = {
"GET" : {
"/info": (req,res) => {
res.writeHead(httpStatus.OK, {"Content-Type": "text/html"})
res.end("Welcome to the Info page")
}
},
"POST" : {}
};
Более поздний объект routes вызывается в этом операторе
if (routes[req.method][req.url]) {
routes[req.method][req.url](req,res);
Похоже, что объект маршрута имеет пару ключей и значений, а затем значение имеет другую пару ключей и значений? и что такое оператор if, проверяющий «if (routes[req.метод][req.url])»?
Комментарии:
1. routes[req.метод][req.url] проверяет, существует ли путь в объектах GET, POST, PUT, OPTIONS, DELETE и т. Д., Поэтому, если бы я вызвал routes[«GET»][«/info»], это вернуло бы значение true.
Ответ №1:
Маршруты-это object
, где у вас есть маршрут для определенных методов http. Например, routes["GET"]["/info"]
имеет значение функции со стрелкой es6, которая принимает два аргумента: req, res
.
Более поздний объект routes вызывается в этом операторе
Ваш код проверяет, существует ли свойство для метода запроса и URL-адрес запроса в routes
объекте, скажем , если кто-то запросил /info
с GET
помощью метода, то функция обратного routes["GET"]["/info"]
вызова будет вызвана с аргументами req
и res
, которые являются параметрами вашего маршрута.
Комментарии:
1. У меня есть еще один пример, который меня смущает const routeResponseMap = { «/информация»: «<h1>Информационная страница<h1></h1>», «/контакт» : «</h1><h1>Свяжитесь с нами<h1></h1>»,}; if (routeResponseMap[req.url]){ res.writeHead(HttpStatus. ОК, {«Тип содержимого»: «текст/html»}); res.end(карта ответов на запросы[req.url]); } Похоже, что если кто-то введет «информация», карта ответов на запросы[req.url] в операторе if будет иметь значение «информация», но res.end(карта ответов на запросы[req.ur]) возвращает html <h1>, а не информацию, когда я ее запускаю. В моем первоначальном вопросе, если я сделаю res.end(маршруты[«Get»]), вернет ли он «/info»?
2. @monkeycoder вопрос не ясен. Если этот ответ проясняет вас, пожалуйста, отметьте его правильно. Вместо этого опубликуйте второй в новом вопросе. Это не имеет отношения к текущему контексту.