From 0f14e86fbd36e5b7269c9e17c41a80b9ab007fe9 Mon Sep 17 00:00:00 2001 From: kasmanavt Date: Wed, 14 Sep 2016 23:08:49 +0300 Subject: [PATCH] formattin fix --- ru/03.2.md | 133 +++++++++++++++++++++++++++-------------------------- 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/ru/03.2.md b/ru/03.2.md index 6f1aad44..af1540ab 100644 --- a/ru/03.2.md +++ b/ru/03.2.md @@ -1,66 +1,67 @@ -# 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` - -Посмотрите, что произошло на стороне сервера и клиента. - -Вы должны увидеть следующие сообщения на стороне сервера - -![](images/3.2.goweb.png?raw=true) - -Рисунок 3.8 вывод информации на стороне сервера - -Как вы видите, нам потребовалось вызвать всего две функции для того чтобы создать простой веб-сервер. - -Если вы работаете с PHP, вы, вероятно, хотите спросить, нужно ли нам что-то вроде Nginx или Apache? Ответ - нет! Go реализует прослушку TCP порта самостоятельно, а функция `sayhelloName`, в нашем примере, очень похожа на контроллер из PHP. - -Если вы работаете с Python, вы должны знать Tornado, и он очень похож на приведенный выше пример. - -Если вы работаете с Ruby, вы наверняка заметили, что это как сценарий/сервер в RoR. - -В данном разделе мы использовали две простые функции для создания простого веб-сервера который уже готов к параллельным вычислениям. В следующих двух разделах мы будем говорить о том, как использовать эту особенность. - -## Ссылки - -- [Содержание](preface.md) -- Предыдущий раздел: [Принципы работы Веб](03.1.md) -- Следующий раздел: [Как Go работает с веб](03.3.md) - +# 3.2 Создание простого веб-сервера + +Ранее мы говорили о том, что Go предоставляет широкие возможности для работы с протоколом HTTP и создания веб-приложений, базирующихся на данном протоколе. Все эти возможности реализуются в пакете `net/http`. + +## Использование пакета net/http для создания веб-сервера + + package main + + import ( + "fmt" + "log" + "net/http" + "strings" + ) + + 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` + +Посмотрите, что произошло на стороне сервера и клиента. + +Вы должны увидеть следующие сообщения на стороне сервера + +![](images/3.2.goweb.png?raw=true) + +Рисунок 3.8 вывод информации на стороне сервера + +Как вы видите, нам потребовалось вызвать всего две функции для того чтобы создать простой веб-сервер. + +Если вы работаете с PHP, вы, вероятно, хотите спросить, нужно ли нам что-то вроде Nginx или Apache? Ответ - нет! Go реализует прослушку TCP порта самостоятельно, а функция `sayhelloName`, в нашем примере, очень похожа на контроллер из PHP. + +Если вы работаете с Python, вы должны знать Tornado, и он очень похож на приведенный выше пример. + +Если вы работаете с Ruby, вы наверняка заметили, что это как сценарий/сервер в RoR. + +В данном разделе мы использовали две простые функции для создания простого веб-сервера который уже готов к параллельным вычислениям. В следующих двух разделах мы будем говорить о том, как использовать эту особенность. + +## Ссылки + +- [Содержание](preface.md) +- Предыдущий раздел: [Принципы работы Веб](03.1.md) +- Следующий раздел: [Как Go работает с веб](03.3.md) + +