«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > API-сервер веб-сервиса в Go

API-сервер веб-сервиса в Go

Опубликовано 31 июля 2024 г.
Просматривать:885

Web Service Api Server in Go

В этой главе мы представим веб-программирование на Go и Json для создания веб-службы API с типами данных ответа в форме API.

  1. API для создания веб-сайтов Сначала подготовьте образец данных
package main
import "encoding/json"
import "net/http"
import "fmt"
type student struct {
 ID string
 Name string
 Grade int
}
var data = []student{
 student{"E001", "ethan", 21},
 student{"W001", "wick", 22},
 student{"B001", "bourne", 23},
 student{"B002", "bond", 23},
}

Приведенная выше структура студента используется в качестве образца элемента среза данных, хранящегося в переменной данных.
Затем создайте функцию user() для обработки конечной точки /users. В этой функции есть процесс определения типа запроса через свойство r.Method(), чтобы выяснить, является ли тип запроса Post, Get или что-то еще.

func users(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var result, err = json.Marshal(data)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}

Если запрос представляет собой GET (получение данных), то данные кодируются в формате JSON
используется в качестве ответа.
Оператор w.Header().Set("Content-Type", "application/json") используется для
определить тип ответа, а именно JSON. Пока r.Write()
используется для регистрации данных в качестве ответа.
В противном случае, если запрос недействителен, ответ устанавливается как ошибка с помощью
Функция http.Error().
Также настройте обработчик для конечной точки /user. Разница между этой конечной точкой и
/users выше:
Конечная точка /users возвращает все существующие выборочные данные (массив).
Конечная точка /user возвращает только один фрагмент данных, взятый из data
образец на основе его идентификатора. В этой конечной точке клиент должен отправить
также идентификационная информация искомых данных

func user(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var id = r.FormValue("id")
 var result []byte
 var err error
 for _, each := range data {
 if each.ID == id {
 result, err = json.Marshal(each)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 }
 http.Error(w, "User not found", http.StatusNotFound)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}

Метод r.FormValue() используется для получения данных формы, отправленных из
клиента, в этом контексте речь идет о данных ID.
С помощью этого идентификатора осуществляется поиск соответствующих данных. Если есть, то
вернулся в качестве ответа. Если его нет, то ошибка 400, неверный запрос
вернулся с сообщением: Пользователь не найден.
Наконец, реализуйте два вышеописанных обработчика.

func main() {
 http.HandleFunc("/users", users)
 http.HandleFunc("/user", user)
 fmt.Println("starting web server at http://localhost:8080/")
 http.ListenAndServe(":8080", nil)
}

Запустите программу, теперь веб-сервер работает и данные можно использовать.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/sukmarizki04/web-service-api-server-in-go-efl?1. В случае нарушения авторских прав свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3