Ответ 1
app.use
вставляет в конвейер промежуточное программное обеспечение, которое требует вызова следующего промежуточного программного обеспечения путем вызова next.Invoke().
app.run
вставляет промежуточное ПО без следующего, поэтому он просто запускается.
С помощью app.map
вы можете сопоставить пути, которые оцениваются во время выполнения, для каждого запроса, для запуска определенного промежуточного программного обеспечения, только если путь запроса соответствует шаблону, который вы сопоставили.