tgoop.com/golang_interview/508
Create:
Last Update:
Last Update:
Создание простого сервера с поддержкой REST API на языке Go можно выполнить с использованием стандартной библиотеки net/http. Поехали!User и создадим веб-сервер:
package main
import (
"encoding/json"
"log"
"net/http"
"strconv"
"sync"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
var (
users = make(map[int]User)
mu sync.Mutex
idSeq int
)
func createUser(w http.ResponseWriter, r *http.Request) {
mu.Lock()
defer mu.Unlock()
idSeq++
user := User{ID: idSeq}
if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
users[user.ID] = user
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(user)
}
func getUser(w http.ResponseWriter, r *http.Request) {
id, err := strconv.Atoi(r.URL.Path[len("/users/"):])
if err != nil {
http.Error(w, "Invalid user ID", http.StatusBadRequest)
return
}
mu.Lock()
defer mu.Unlock()
user, ok := users[id]
if !ok {
http.NotFound(w, r)
return
}
json.NewEncoder(w).Encode(user)
}
func main() {
http.HandleFunc("/users", createUser)
http.HandleFunc("/users/", getUser)
log.Println("Starting server on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
8080. Он обрабатывает два запроса:—
POST/users: Создает нового пользователя. Ожидает JSON с именем пользователя в теле запроса. —
GET/users/{id}: Возвращает данные пользователя по его ID.curl или postman. Например, для создания пользователя:curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe"}' http://localhost:8080/userscurl http://localhost:8080/users/1
@golang_interview

