GOLANG_INTERVIEW Telegram 508
👣 Простой сервер с поддержкой REST API на языке Go

Создание простого сервера с поддержкой 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))
}


Этот код запускает HTTP-сервер на порту 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/users


И для получения пользователя по ID:
curl http://localhost:8080/users/1


@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱18👍142🔥1



tgoop.com/golang_interview/508
Create:
Last Update:

👣 Простой сервер с поддержкой REST API на языке Go

Создание простого сервера с поддержкой 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))
}


Этот код запускает HTTP-сервер на порту 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/users


И для получения пользователя по ID:
curl http://localhost:8080/users/1


@golang_interview

BY Golang вопросы собеседований




Share with your friend now:
tgoop.com/golang_interview/508

View MORE
Open in Telegram


Telegram News

Date: |

A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. Select “New Channel” The Standard Channel SUCK Channel Telegram
from us


Telegram Golang вопросы собеседований
FROM American