"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Servidor API de serviço da Web em Go

Servidor API de serviço da Web em Go

Publicado em 31/07/2024
Navegar:367

Web Service Api Server in Go

Neste capítulo, apresentaremos a programação web go e Json para criar um serviço web API com tipos de dados de resposta na forma de uma API.

  1. API de criação WEB Prepare alguns dados de amostra primeiro
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},
}

A estrutura do aluno acima é usada como o tipo de elemento de fatia de dados de amostra, armazenado na variável de dados.
Em seguida, crie uma função user() para lidar com o endpoint /users. Nesta função existe um processo de detecção do tipo de solicitação através da propriedade r.Method(), para saber se o tipo de solicitação é Post ou Get ou outro.

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)
}

Se a solicitação for um GET (recuperação de dados), então os dados serão codificados em JSON
usado como resposta.
A instrução w.Header().Set("Content-Type", "application/json") é usada para
determine o tipo de resposta, nomeadamente como JSON. Enquanto r.Write()
usado para registrar dados como resposta.
Caso contrário, se a solicitação for inválida, a resposta será definida como erro usando
Função http.Error().
Configure também um manipulador para o endpoint /user. A diferença entre este endpoint e
/usuários acima é:
O endpoint /users retorna todos os dados de amostra existentes (matriz).
O endpoint /user retorna apenas um dado, retirado dos dados
amostra com base em seu ID. Neste endpoint, o cliente deve enviar
também as informações de identificação dos dados procurados

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)
}

O método r.FormValue() é usado para recuperar dados do formulário enviados de
cliente, neste contexto o dado referido é o ID.
Ao usar esse ID, são pesquisados ​​dados relevantes. Se houver, então
retornado como resposta. Caso contrário, erro 400, solicitação incorreta
retornado com a mensagem Usuário não encontrado.
Finalmente, implemente os dois manipuladores acima.

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

Execute o programa, agora o servidor web está ativo e os dados podem ser consumidos.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/sukmarizki04/web-service-api-server-in-go-efl?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3