Я думаю, что ответ на ваш вопрос заключается в том, что именно так авторы Express решили внедрить библиотеку.На высоком уровне express - это всего лишь облегченная оболочка, которая упрощает создание http-сервисов на базе промежуточного программного обеспечения с NodeJS.Причина, по которой оба объекта req & res передаются каждой функции промежуточного программного обеспечения, заключается в том, что на практике веб-службы редко могут выполнить весь запрос за один шаг.Часто службы создаются как слой промежуточного программного обеспечения и формируют ответ в несколько этапов.
Например, у вас может быть функция промежуточного программного обеспечения, которая ищет в запросе информацию об идентификаторе и извлекает любые соответствующие метаданные идентификатора при установке некоторой аутентификации.конкретные заголовки ответа.Затем запрос может быть передан в промежуточное ПО авторизации, которое использует извлеченные метаданные, чтобы определить, авторизован ли текущий пользователь и может ли пользователь завершить запрос досрочно, закрыв поток ответов.Если пользователь авторизован, то запрос будет продолжен до следующего компонента промежуточного программного обеспечения и т. Д. Чтобы это работало, каждая функция промежуточного программного обеспечения (шаг стека) должна иметь возможность доступа к информации из запроса, а также записи информации в ответ,Express обрабатывает это, передавая объекты запроса и ответа в качестве аргументов функции промежуточного программного обеспечения, но это только один из способов сделать это.
Теперь авторы могли бы по-разному реализовать библиотеку так, чтобы предполагался каждый обработчик маршрута.вернуть объект, такой как { status: 200, content: "Hello, world" }
, вместо вызова методов для объекта ответа, но это было бы вопросом соглашения, и вы могли бы довольно легко написать обертку вокруг express, которая позволит вам написать ваши сервисы, как это, если хотите.
Надеюсь, это поможет.