go rest api server 及 go mod 实战  
   
所属分类 go
浏览量 1186
godemo/v2/main.go 
只有 main.go 
go run main.go
main.go:8:2: cannot find package "github.com/gorilla/mux" in any of:
        /usr/local/go/src/github.com/gorilla/mux (from $GOROOT)
        /Users/dugang/go/src/github.com/gorilla/mux (from $GOPATH)
go env
GO111MODULE="auto"
GOPROXY="https://goproxy.cn"
GOPROXY 推荐设置成 goproxy.cn
export GOPROXY=https://goproxy.cn
go mod init main
go: creating new go.mod: module main
go: to add module requirements and sums:
        go mod tidy
此时 go.mod 内容
module main
go 1.19
自动添加依赖
go mod tidy  
go: finding module for package github.com/gorilla/mux
go: found github.com/gorilla/mux in github.com/gorilla/mux v1.8.0
go.mod 内容
module main
go 1.19
require github.com/gorilla/mux v1.8.0
自动生成 go.sum 
go run main.go
启动后 浏览器测试
http://127.0.0.1:8080 
http://127.0.0.1:8080/todos 
http://127.0.0.1:8080/todos/1
main.go 
package main
import (
	"fmt"
	"log"
	"net/http"
	"github.com/gorilla/mux"
)
func main() {
	router := mux.NewRouter().StrictSlash(true)
	router.HandleFunc("/", Index)
	router.HandleFunc("/todos", TodoIndex)
	router.HandleFunc("/todos/{todoId}", TodoShow)
	log.Fatal(http.ListenAndServe(":8080", router))
}
func Index(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Welcome!\n")
}
func TodoIndex(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Todo Index!\n")
}
func TodoShow(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)
	todoId := vars["todoId"]
	fmt.Fprintf(w, "Todo show: %s\n", todoId)
}
完整代码 
https://gitee.com/dyyx/hellocode/tree/master/demo/go/rest-json-api/v3
 上一篇  
   
 下一篇  
 docker 利用环境变量 设置 jvm 启动参数 系统参数 
 Go依赖管理 和 Go module使用 
 MAC  M1 芯片 
 GO操作Mysql 
 余杭护国山 
 职场暗语