Maison  >  Article  >  développement back-end  >  Comment créer une API RESTful et mettre en œuvre des contrôles de santé à l'aide de Golang ?

Comment créer une API RESTful et mettre en œuvre des contrôles de santé à l'aide de Golang ?

WBOY
WBOYoriginal
2024-06-05 12:33:58807parcourir

Utilisez Golang pour créer une API RESTful et mettre en œuvre des contrôles de santé : Créez une API RESTful : créez un nouveau projet, définissez le modèle de données, définissez des itinéraires et implémentez des gestionnaires. Implémenter des vérifications de l'état : définissez les points de terminaison de la vérification de l'état et implémentez les gestionnaires de vérification de l'état. Cet exemple montre comment créer une API qui renvoie une liste d'utilisateurs et implémente le point de terminaison de vérification de l'état : Obtenez la liste des utilisateurs via GET /users. Vérifiez l’état de l’API via GET /healthz.

如何使用 Golang 构建 RESTful API 并实现健康检查?

Comment utiliser Golang pour créer une API RESTful et mettre en œuvre un bilan de santé

Introduction

L'API RESTful, en tant que norme de communication d'application moderne, est de plus en plus favorisée par les développeurs. Golang est idéal pour créer des API RESTful en raison de ses hautes performances et de sa concurrence. Dans le même temps, la mise en œuvre de contrôles de santé est essentielle pour garantir le bon fonctionnement de l’API. Cet article vous guidera pour créer une API RESTful et mettre en œuvre des vérifications de l'état à l'aide de Golang.

Créez une API RESTful

1. Créez un nouveau projet

go mod init rest-api

2 Définissez le modèle de données

type User struct {
    ID       int    `json:"id"`
    Username string `json:"username"`
    Password string `json:"password"`
}

3. Définissez la route

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/users", getUsers).Methods("GET")
    // ... 更多路由
    log.Fatal(http.ListenAndServe(":8080", router))
}

4.

func getUsers(w http.ResponseWriter, r *http.Request) {
    users := []User{
        {ID: 1, Username: "user1", Password: "password1"},
        // ... 更多用户
    }

    json.NewEncoder(w).Encode(users)
}

implémentation Health Check

1 Définir le point de terminaison du contrôle de santé

router.HandleFunc("/healthz", healthz).Methods("GET")

2 Implémenter le gestionnaire de contrôle de santé

func healthz(w http.ResponseWriter, r *http.Request) {
    // TODO: 检查数据库连接性、缓存可用性等指标

    if healthy {
        w.WriteHeader(http.StatusOK)
        w.Write([]byte("OK"))
    } else {
        w.WriteHeader(http.StatusServiceUnavailable)
        w.Write([]byte("ERROR"))
    }
}

Cas pratique

Cet exemple montre comment utiliser Golang pour créer un. API RESTful (renvoyant une liste d'utilisateurs) et implémentez le point de terminaison de vérification de l'état :

  • Obtenez la liste des utilisateurs via la requête HTTP GET /users /users 获取用户列表
  • 通过 HTTP GET 请求 /healthz
  • Vérifiez l'état de santé de l'API via la requête HTTP GET /healthz

Code complet :

🎜
package main

import (
    "encoding/json"
    "net/http"

    "github.com/gorilla/mux"
)

type User struct {
    ID       int    `json:"id"`
    Username string `json:"username"`
    Password string `json:"password"`
}

func getUsers(w http.ResponseWriter, r *http.Request) {
    users := []User{
        {ID: 1, Username: "user1", Password: "password1"},
        {ID: 2, Username: "user2", Password: "password2"},
    }

    json.NewEncoder(w).Encode(users)
}

func healthz(w http.ResponseWriter, r *http.Request) {
    // TODO: 检查数据库连接性、缓存可用性等指标

    if healthy {
        w.WriteHeader(http.StatusOK)
        w.Write([]byte("OK"))
    } else {
        w.WriteHeader(http.StatusServiceUnavailable)
        w.Write([]byte("ERROR"))
    }
}

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/users", getUsers).Methods("GET")
    router.HandleFunc("/healthz", healthz).Methods("GET")
    http.ListenAndServe(":8080", router)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn