package main import ( "fmt" "net/http" "strconv" ) func main() { // server1() // server2() server3() } func handlerHello(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, web!")) } func server1() { http.HandleFunc("/get", handlerHello) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println("Ошибка запуска сервера:", err) } } func handlerName(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello," + r.URL.Query().Get("name"))) } func server2() { http.HandleFunc("/api/user", handlerName) err := http.ListenAndServe(":9000", nil) if err != nil { fmt.Println("Ошибка запуска сервера:", err) } } // Напиши веб сервер (порт :3333) - счетчик который будет обрабатывать // GET (/count) и POST (/count) запросы: // GET: возвращает счетчик // POST: увеличивает ваш счетчик на значение (с ключом "count") // которое вы получаете из формы, но если пришло НЕ число то нужно // ответить клиенту: "это не число" со статусом http.StatusBadRequest (400). var count int func handlerCount(w http.ResponseWriter, r *http.Request) { if r.Method == "GET" { fmt.Fprint(w, count) } else if r.Method == "POST" { cnt, err := strconv.Atoi(r.FormValue("count")) if err != nil { w.WriteHeader(http.StatusBadRequest) // return 400 w.Write([]byte("это не число")) return } count += cnt } w.WriteHeader(http.StatusMethodNotAllowed) // return 405 } func server3() { http.HandleFunc("/count", handlerCount) err := http.ListenAndServe(":3333", nil) if err != nil { fmt.Println("Ошибка запуска сервера:", err) } }