server_task.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "strconv"
  6. )
  7. func main() {
  8. // server1()
  9. // server2()
  10. server3()
  11. }
  12. func handlerHello(w http.ResponseWriter, r *http.Request) {
  13. w.Write([]byte("Hello, web!"))
  14. }
  15. func server1() {
  16. http.HandleFunc("/get", handlerHello)
  17. err := http.ListenAndServe(":8080", nil)
  18. if err != nil {
  19. fmt.Println("Ошибка запуска сервера:", err)
  20. }
  21. }
  22. func handlerName(w http.ResponseWriter, r *http.Request) {
  23. w.Write([]byte("Hello," + r.URL.Query().Get("name")))
  24. }
  25. func server2() {
  26. http.HandleFunc("/api/user", handlerName)
  27. err := http.ListenAndServe(":9000", nil)
  28. if err != nil {
  29. fmt.Println("Ошибка запуска сервера:", err)
  30. }
  31. }
  32. // Напиши веб сервер (порт :3333) - счетчик который будет обрабатывать
  33. // GET (/count) и POST (/count) запросы:
  34. // GET: возвращает счетчик
  35. // POST: увеличивает ваш счетчик на значение (с ключом "count")
  36. // которое вы получаете из формы, но если пришло НЕ число то нужно
  37. // ответить клиенту: "это не число" со статусом http.StatusBadRequest (400).
  38. var count int
  39. func handlerCount(w http.ResponseWriter, r *http.Request) {
  40. if r.Method == "GET" {
  41. fmt.Fprint(w, count)
  42. } else if r.Method == "POST" {
  43. cnt, err := strconv.Atoi(r.FormValue("count"))
  44. if err != nil {
  45. w.WriteHeader(http.StatusBadRequest) // return 400
  46. w.Write([]byte("это не число"))
  47. return
  48. }
  49. count += cnt
  50. }
  51. w.WriteHeader(http.StatusMethodNotAllowed) // return 405
  52. }
  53. func server3() {
  54. http.HandleFunc("/count", handlerCount)
  55. err := http.ListenAndServe(":3333", nil)
  56. if err != nil {
  57. fmt.Println("Ошибка запуска сервера:", err)
  58. }
  59. }