以下是一个简单的 Go 语言 Web 应用程序,可以进行多个接口请求并返回多个值:

package main

import (
	"database/sql"
	"encoding/json"
	"log"
	"net/http"

	"github.com/gorilla/mux"
	_ "github.com/mattn/go-sqlite3"
)

type User struct {
	ID       int    `json:"id"`
	Name     string `json:"name"`
	Email    string `json:"email"`
	Password string `json:"password"`
}

type Response struct {
	Users []User `json:"users"`
}

func main() {
	db, err := sql.Open("sqlite3", "./users.db")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	router := mux.NewRouter()

	router.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
		rows, err := db.Query("SELECT * FROM users")
		if err != nil {
			log.Fatal(err)
		}
		defer rows.Close()

		response := Response{}
		for rows.Next() {
			user := User{}
			err := rows.Scan(&user.ID, &user.Name, &user.Email, &user.Password)
			if err != nil {
				log.Fatal(err)
			}
			response.Users = append(response.Users, user)
		}

		w.Header().Set("Content-Type", "application/json")
		json.NewEncoder(w).Encode(response)
	}).Methods("GET")

	router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) {
		params := mux.Vars(r)
		id := params["id"]

		row := db.QueryRow("SELECT * FROM users WHERE id=?", id)

		user := User{}
		err := row.Scan(&user.ID, &user.Name, &user.Email, &user.Password)
		if err != nil {
			log.Fatal(err)
		}

		w.Header().Set("Content-Type", "application/json")
		json.NewEncoder(w).Encode(user)
	}).Methods("GET")

	log.Fatal(http.ListenAndServe(":8080", router))
}

这个应用程序有两个接口:

  • /users:返回所有用户的列表。
  • /users/{id}:返回具有特定ID的用户。

在这个例子中,我们使用了一个 SQLite3 数据库,但是你可以使用其他任何数据库。

你可以使用以下命令来运行此程序:

go run main.go

现在,你可以使用浏览器或任何 HTTP 客户端来访问这些接口,并查看返回的 JSON 数据。

例如,访问http://localhost:8080/users将返回所有用户的列表。

Go语言 Web API: 多接口请求数据库查询并返回多个值

原文地址: https://www.cveoy.top/t/topic/ojpF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录