fix mistakes
This commit is contained in:
34
ru/03.4.md
34
ru/03.4.md
@@ -109,24 +109,24 @@ Go использует следующий код для ожидания нов
|
||||
Давайте посмотрим на поток выполнения.
|
||||
|
||||
- Вызывается `http.HandleFunc`.
|
||||
1. Вызывается `HandleFunc` из `DefaultServeMux`.
|
||||
2. Вызывается `Handle` из `DefaultServeMux`.
|
||||
3. Добавляются правила маршрутизации в карту `map[string]muxEntry` из `DefaultServeMux`.
|
||||
1. Вызывается `HandleFunc` из `DefaultServeMux`.
|
||||
2. Вызывается `Handle` из `DefaultServeMux`.
|
||||
3. Добавляются правила маршрутизации в карту `map[string]muxEntry` из `DefaultServeMux`.
|
||||
- Вызывается `http.ListenAndServe(":9090", nil)`.
|
||||
1. Создается экземпляр `Server`.
|
||||
2. Вызывается `ListenAndServe` для `Server`.
|
||||
3. Вызывается `net.Listen("tcp", addr)` для прослушки порта.
|
||||
4. Запускается бесконечный цикл, в теле которого происходит прием запросов.
|
||||
5. Создается экземпляр Conn и запускаются горутины для каждого запроса: `go c.serve()`.
|
||||
6. Читаются данные запроса: `w, err := c.readRequest()`.
|
||||
7. Проверяется существует ли обработчик и если обработчика нет используется `DefaultServeMux`.
|
||||
8. Вызывается `ServeHTTP` для обработчика.
|
||||
9. Исполняется код в `DefaultServeMux` в нашем случае.
|
||||
10. Выбирается обработчик, соответсвующий URL, и исполняется код обработчика: `mux.handler.ServeHTTP(w, r)`
|
||||
11. Как выбирается обработчик:
|
||||
A. Проверяются правила маршрутизации по данному URL.
|
||||
B. Вызывается `ServeHTTP` в данном обработчике, если он есть.
|
||||
C. В противном случае вызывается `ServeHTTP` для `NotFoundHandler`.
|
||||
1. Создается экземпляр `Server`.
|
||||
2. Вызывается `ListenAndServe` для `Server`.
|
||||
3. Вызывается `net.Listen("tcp", addr)` для прослушки порта.
|
||||
4. Запускается бесконечный цикл, в теле которого происходит прием запросов.
|
||||
5. Создается экземпляр Conn и запускаются горутины для каждого запроса: `go c.serve()`.
|
||||
6. Читаются данные запроса: `w, err := c.readRequest()`.
|
||||
7. Проверяется существует ли обработчик и если обработчика нет используется `DefaultServeMux`.
|
||||
8. Вызывается `ServeHTTP` для обработчика.
|
||||
9. Исполняется код в `DefaultServeMux` в нашем случае.
|
||||
10. Выбирается обработчик, соответсвующий URL, и исполняется код обработчика: `mux.handler.ServeHTTP(w, r)`
|
||||
11. Как выбирается обработчик:
|
||||
A. Проверяются правила маршрутизации по данному URL.
|
||||
B. Вызывается `ServeHTTP` в данном обработчике, если он есть.
|
||||
C. В противном случае вызывается `ServeHTTP` для `NotFoundHandler`.
|
||||
|
||||
## Ссылки
|
||||
|
||||
|
||||
Reference in New Issue
Block a user