Мазмунга өтүү

Express тереӊдетип: багыттоо жана middleware

Сабактын башталышы

Express тереӊдетип: багыттоо жана middleware

Суроо-талап колдонмо аркылуу чын эле кандай өтөт - жана бул жолду кантип башкарса болот

Негизги идея: Баштапкы курста сиз app.get жана app.use чакырдыңыз, баары иштеди. Эми капоттун астын карайбыз. Express колдонмосу чындыгында конвейер: ар бир суроо-талап функциялардын иреттелген тизмеси - middleware жана маршрут иштеткичтери - аркылуу бирөө жооп жибергенче же ката ыргытылганча өтөт. Ушул конвейердин иретин өздөштүрсөңүз, баарын башкарасыз: аутентификация, журналдоо, талдоо, багыттоо жана каталарды иштетүү.
Сабактын аягында сиз:
  • middleware чынжырын жана next() так милдетин түшүндүрө аласыз,
  • каттоонун ирети эмне үчүн маанилүү экенин так түшүнөсүз,
  • маршруттарды express.Router() менен модулдук файлдарга бөлө аласыз,
  • көп жана милдеттүү эмес маршрут параметрлерин окуй аласыз,
  • борборлоштурулган ката иштеткич middleware (төрт аргументтүү) жаза аласыз.

1. Суроо-талап конвейери

app.use, app.get, app.post жана окшоштору аркылуу катталган ар бир функция бирдиктүү иреттелген стекке кошулат. Суроо-талап келгенде, Express бул стекти жогорудан ылдый карай өтүп, жолу жана методу дал келген ар бир функцияны иштетет. Башкарууну алган функция так үч жол менен уланта алат:

  • Жооп жиберүү - res.send, res.json, res.end ж. б. чакыруу. Конвейер токтойт; ылдыйдагы эч нерсе иштебейт.
  • next() чакыруу - башкарууну стектеги кийинки дал келген функцияга берүү.
  • next(err) чакыруу - түз эле ката иштеткичке өтүү (5-бөлүмдө кеңири).

Кадимки middleware функциясынын кол тамгасы (req, res, next). Маршрут иштеткичи - бул жөн гана белгилүү методго жана жолго байланган middleware. Бул Expressтеги эң маанилүү ой-жүгүртүү модели: эч кандай сыйкыр жок, функциялардын иреттелген тизмеси гана.

Аналогия. Фабрикадагы чогултуу конвейерин элестетиңиз. Деталь (суроо-талап) лента боюнча станциялардын (middleware) катарынан өтөт. Ар бир станция детальды текшерип же өзгөртүп, аны next() менен алдыга узата алат, же даяр продукт жөнөтүп (res.send), лентадан такыр алып салат. Эгер станция акауну тапса, детальды четке кагуу науасына таштайт - бул next(err), жана бул наус бир өзгөчө станцияга алып барат: ката иштеткичке.

Express суроо-талап конвейери Суроо-талап GET /users/7 логгер next() express.json() next() авторизация текшерүү next() маршрут иштеткич Жооп 200 OK ката иштеткич (err,req,res,next) next(err)
Ар бир станция суроо-талапты next() менен алдыга узатат; ыргытылган ката төрт аргументтүү ката иштеткичке секирет.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө