Fix typos and punctuation errors

This commit is contained in:
KirillMerz
2021-06-21 22:01:42 +07:00
parent 69e6f80e6d
commit a214736566
26 changed files with 58 additions and 58 deletions

View File

@@ -12,9 +12,9 @@ Conn: соединения между клиентами и серверами.
Handler: логика обработки запроса и генерация ответа.
## механизм работы пакета http
## Механизм работы пакета http
На следующей картинке показано как работает веб-сервер Go.
На следующей картинке показано, как работает веб-сервер Go.
![](images/3.3.http.png?raw=true)
@@ -34,7 +34,7 @@ Handler: логика обработки запроса и генерация о
Давайте посмотрим на исходный код пакета `http`.
//используется код Go версии 1.1.2
//Используется код Go версии 1.1.2
func (srv *Server) Serve(l net.Listener) error {
defer l.Close()
@@ -68,7 +68,7 @@ Handler: логика обработки запроса и генерация о
Как происходит прием клиентских запросов? В исходном коде мы видим, что происходит вызов метода `srv.Serve(net.Listener)` для управления клиентскими запросами. В теле функции бесконечный цикл `for{}` принимает запросы, создает новое соединение, запускает новую горутину `go c.serve()` и передает в нее данные запроса. Так Go поддерживает высокий параллелизм, за счет того, что все горутины являются независимыми.
Теперь ответим на вопрос как используются конкретные функции для управления запросами? Сначала метод `conn` парсит запрос возвращаемый `c.ReadRequest()`, а затем получает соответствующий обработчик: `handler := c.server.Handler`, который, в совою очередь, передается в качестве второго аргумента при вызове метода `ListenAndServe`. В нашем сервере мы использовали `nil`, поэтому Go использует обработчик по умолчанию: `handler = DefaultServeMux`. Возникает вопрос - что здесь делает `DefaultServeMux`? DefaultServeMux - это переменная, содержащая указатель на текущий маршрутизатор, который вызывает обработчики для заданных URL-адресов. Разве мы его устанавливали? Ответ - да. Помните в первой строке нашего веб-сервера мы использовали `http.HandleFunc("/", sayhelloName)`. Эта функция регистрирует правила маршрутизации для пути "/". Когда URL-адрес запроса соответствует «/», маршрутизатор вызывает функцию «sayhelloName». DefaultServeMux вызывает ServerHTTP для получения функции обработчика соответствующего заданному пути. В нашем случае он вызывает «sayhelloName». Наконец, сервер отвечает клиенту.
Теперь ответим на вопрос: как используются конкретные функции для управления запросами? Сначала метод `conn` парсит запрос, возвращаемый `c.ReadRequest()`, а затем получает соответствующий обработчик: `handler := c.server.Handler`, который, в свою очередь, передается в качестве второго аргумента при вызове метода `ListenAndServe`. В нашем сервере мы использовали `nil`, поэтому Go использует обработчик по умолчанию: `handler = DefaultServeMux`. Возникает вопрос - что здесь делает `DefaultServeMux`? DefaultServeMux - это переменная, содержащая указатель на текущий маршрутизатор, который вызывает обработчики для заданных URL-адресов. Разве мы его устанавливали? Ответ - да. Помните в первой строке нашего веб-сервера мы использовали `http.HandleFunc("/", sayhelloName)`. Эта функция регистрирует правила маршрутизации для пути "/". Когда URL-адрес запроса соответствует «/», маршрутизатор вызывает функцию «sayhelloName». DefaultServeMux вызывает ServerHTTP для получения функции обработчика соответствующего заданному пути. В нашем случае он вызывает «sayhelloName». Наконец, сервер отвечает клиенту.
Подробное описание процесса:
@@ -82,6 +82,6 @@ Handler: логика обработки запроса и генерация о
- [Содержание](preface.md)
- Предыдущий раздел: [Создание простого веб-сервера](03.2.md)
- Следующий раздел: [Внутренний мир пакет http](03.4.md)
- Следующий раздел: [Внутренний мир пакета http](03.4.md)