| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package main
- import (
- "fmt"
- "io"
- "log"
- "net/http"
- )
- // Обработчик HTTP-запросов
- /*
- func handler(w http.ResponseWriter, r *http.Request) {
- fmt.Println("RawQuery: ", r.URL.String())
- fmt.Println("Name: ", r.URL.Query().Get("name"))
- fmt.Println("IsExist: ", r.URL.Query().Has("name"))
- w.Write([]byte("Привет, Stepik!"))
- }
- */
- func main() {
- // server2()
- server3()
- /*
- // Регистрируем обработчик для пути "/"
- http.HandleFunc("/", handler)
- // Запускаем веб-сервер на порту 8080
- err := http.ListenAndServe(":8080", nil)
- if err != nil {
- fmt.Println("Ошибка запуска сервера:", err)
- }
- */
- }
- // Веб сервер по пути /body принимает запрос и проверяет что он
- // является POST методом. Далее читаем тело через уже знакомую
- // функцию io.ReadAll()
- func handlerBody(w http.ResponseWriter, r *http.Request) {
- // Проверяем что метод POST
- if r.Method == "POST" {
- // читаем входящее тело запроса
- bytesBody, err := io.ReadAll(r.Body)
- if err != nil {
- log.Println(err)
- w.Write([]byte("Плохое тело запроса"))
- return
- }
- // печатем тело запроса как строку
- fmt.Println(string(bytesBody))
- // отвечаем клиенту, что все хорошо
- w.Write([]byte("OK!"))
- return
- }
- w.Write([]byte("Разрешен только метод POST!"))
- }
- func server2() {
- // Регистрируем обработчик для пути "/body"
- http.HandleFunc("/body", handlerBody)
- // Запускаем веи-сервер на порту 8080
- err := http.ListenAndServe(":8080", nil)
- if err != nil {
- fmt.Println("Ошибка запуска сервера:", err)
- }
- }
- // Коды ответа
- func handlerOK1(w http.ResponseWriter, r *http.Request) {
- w.Write([]byte("Привет"))
- w.WriteHeader(200)
- }
- func handlerOK2(w http.ResponseWriter, r *http.Request) {
- if r.Method == "PUT" {
- w.WriteHeader(http.StatusMethodNotAllowed) // return 405
- return
- }
- w.Write([]byte("Привет!"))
- w.WriteHeader(http.StatusOK)
- }
- func server3() {
- http.HandleFunc("/", handlerOK1)
- http.HandleFunc("2", handlerOK2)
- err := http.ListenAndServe(":3000", nil)
- if err != nil {
- fmt.Println("Ошибка запуска сервера:", err)
- }
- }
|