add ru translation for chapter 03.2
This commit is contained in:
66
ru/03.2.md
Normal file
66
ru/03.2.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# 3.2 Создание простого веб-сервера
|
||||
|
||||
Ранее мы говорили о том, что Go предоставляет широкие возможности для работы с протоколом HTTP и создания веб-приложений, базирующихся на данном протоколе. Все эти возможности реализуются в пакете `net/http`.
|
||||
|
||||
## Использование пакета net/http для создания веб-сервера
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"log"
|
||||
)
|
||||
|
||||
func sayhelloName(w http.ResponseWriter, r *http.Request) {
|
||||
r.ParseForm() // разбор аргументов, необходимо вызвать самостоятельно
|
||||
fmt.Println(r.Form) // печать данных формы на стороне сервера
|
||||
fmt.Println("path", r.URL.Path)
|
||||
fmt.Println("scheme", r.URL.Scheme)
|
||||
fmt.Println(r.Form["url_long"])
|
||||
for k, v := range r.Form {
|
||||
fmt.Println("key:", k)
|
||||
fmt.Println("val:", strings.Join(v, ""))
|
||||
}
|
||||
fmt.Fprintf(w, "Hello astaxie!") // отправка данных на клиент
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", sayhelloName) // устанавливаем обработчик
|
||||
err := http.ListenAndServe(":9090", nil) // устанавливаем порт, который будем слушать
|
||||
if err != nil {
|
||||
log.Fatal("ListenAndServe: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
После исполнения данного кода, он запустит прослушивание порта 9090 на вашем компьютере.
|
||||
|
||||
Откройте браузер и введите URL `http://localhost:9090`. Вы увидите сообщение `Hello astaxie` на экране.
|
||||
|
||||
Давайте попробуем передать серверу несколько аргументов `http://localhost:9090/?url_long=111&url_long=222`
|
||||
|
||||
Посмотрите, что произошло на стороне сервера и клиента.
|
||||
|
||||
Вы должны увидеть следующие сообщения на стороне сервера
|
||||
|
||||

|
||||
|
||||
Рисунок 3.8 вывод информации на стороне сервера
|
||||
|
||||
Как вы видите, нам потребовалось вызвать всего две функции для того чтобы создать простой веб-сервер.
|
||||
|
||||
Если вы работаете с PHP, вы, вероятно, хотите спросить, нужно ли нам что-то вроде Nginx или Apache? Ответ - нет! Go реализует прослушку TCP порта самостоятельно, а функция `sayhelloName`, в нашем примере, очень похожа на контроллер из PHP.
|
||||
|
||||
Если вы работаете с Python, вы должны знать Tornado, и он очень похож на приведенный выше пример.
|
||||
|
||||
Если вы работаете с Ruby, вы наверняка заметили, что это как сценарий/сервер в RoR.
|
||||
|
||||
В данном разделе мы использовали две простые функции для создания простого веб-сервера который уже готов к параллельным вычислениям. В следующих двух разделах мы будем говорить о том, как использовать эту особенность.
|
||||
|
||||
## Ссылки
|
||||
|
||||
- [Содержание](preface.md)
|
||||
- Предыдущий раздел: [Принципы работы Веб](03.1.md)
|
||||
- Следующий раздел: [Как Go работает с веб](03.3.md)
|
||||
|
||||
Reference in New Issue
Block a user