Skip to content

Instantly share code, notes, and snippets.

@jtprogru
Created April 26, 2024 19:46
Show Gist options
  • Save jtprogru/2231dbf99522ee8a68b0e0b3a6502d81 to your computer and use it in GitHub Desktop.
Save jtprogru/2231dbf99522ee8a68b0e0b3a6502d81 to your computer and use it in GitHub Desktop.
Напиши веб сервер (порт :3333) - счетчик который будет обрабатывать GET (/count) и POST (/count) запросы: GET: возвращает счетчик POST: увеличивает ваш счетчик на значение (с ключом "count") которое вы получаете из формы, но если пришло НЕ число то нужно ответить клиенту: "это не число" со статусом http.StatusBadRequest (400).
package main
// некоторые импорты нужны для проверки
import (
"fmt"
"io"
"log"
"net/http"
"net/url"
"os"
"time"
"strconv" // вдруг понадобиться вам ;)
)
var counter int = 0
func countHandler(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
w.WriteHeader(http.StatusOK)
w.Write([]byte(strconv.Itoa(counter)))
case http.MethodPost:
err := r.ParseForm()
if err == nil {
countStr := r.FormValue("count")
if countStr == "" {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("это не число"))
return
}
count, err := strconv.Atoi(countStr)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("это не число"))
return
}
counter += count
} else {
w.WriteHeader(http.StatusBadRequest)
return
}
default:
w.WriteHeader(http.StatusMethodNotAllowed)
w.Write([]byte("Метод не поддерживается"))
}
}
func main() {
http.HandleFunc("/count", countHandler)
err := http.ListenAndServe(":3333", nil)
if err != nil {
fmt.Println("Ошибка запуска сервера:", err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment