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`.
|
||||
|
||||
## Ссылки
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 3.5 Итоги раздела
|
||||
# 3.5 Итоги главы
|
||||
|
||||
В этой главе мы познакомились с тем как работает HTTP, разрешение имен DNS и как создать простой веб-сервер на языке Go. После этого мы обсудили как Go создает веб-сервер на примере исходных кодов пакета `net/http`.
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
- [Содержание](preface.md)
|
||||
- Предыдущий раздел: [Внутренний мир пакета http](03.4.md)
|
||||
- Следующая глава: [Форма пользователя](04.0.md)
|
||||
- Следующая глава: [Пользовательские формы](04.0.md)
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
- 4.4. [Дублирование отправки](04.4.md)
|
||||
- 4.5. [Загрузка файлов](04.5.md)
|
||||
- 4.6. [Итоги раздела](04.6.md)
|
||||
- 5.[Database](05.0.md)
|
||||
- 5.[Базы данных](05.0.md)
|
||||
- 5.1. [database/sql interface](05.1.md)
|
||||
- 5.2. [MySQL](05.2.md)
|
||||
- 5.3. [SQLite](05.3.md)
|
||||
|
||||
Reference in New Issue
Block a user