# ShortUrl **Repository Path**: cajan2/ShortUrl ## Basic Information - **Project Name**: ShortUrl - **Description**: 通过短网址转换实操,由浅入深演示sync.Mutex 同步锁,gob编解码器,通道,守护goroutine , 分布式rpc通信等技术落地场景 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-01-11 - **Last Updated**: 2023-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ShortUrl ## 介绍 短标签网址转换,由浅入深,锁,`goroutine,gob,rpc,chan` 等解析 ## 版本 - 版本 1 :` map, struct ,sync.Mutex` 用法 - 版本 2 : 持久化数据gob文件,文件读写,错误处理 - 版本 3 : 使用协程和通道重写应用,实现守护`goroutine` - 版本 4 : 用 `json `版本解决gob基于流的持久化协议带来的一些问题 - 版本 5: 一个使用 `rpc `协议的分布式版本。 =======mogdb_restful # [实战] 使用 MongoDB Go 驱动与 Iris 构建 RESTful API https://learnku.com/articles/35760 > 对官方源码作了合理裁剪,旨在展示如何使用Go构建restful API 应用,数据库`mongodb`的`curd`及`http`错误处理 ## 布局 项目目录 `%GOPATH%\src\pardon110\mogdb_restful`内容如下 ``` │ .env │ main.go ├─env │ env.go ├─httputil │ error.go ├─store │ movie.go └─storeapi movie.go ``` ## 用法 ``` // go get github.com/kataras/iris/v12@master // go get -u go.mongodb.org/mongo-driver // go get -u github.com/joho/godotenv # .env file contents PORT=8082 DSN=mongodb://localhost:27017 $ go run main.go > 2019/01/28 05:17:59 Loading environment variables from file: .env > 2019/01/28 05:17:59 ◽ PORT=8082 > 2019/01/28 05:17:59 ◽ DSN=mongodb://localhost:27017 > Now listening on: http://localhost:8080 ``` ## 效果 增删改查效果图 ![[实战] 使用 MongoDB Go 驱动与 Iris 构建 RESTful API ](https://cdn.learnku.com/uploads/images/201910/30/18357/pxAbDcSt86.png!/fw/1240) ![[实战] 使用 MongoDB Go 驱动与 Iris 构建 RESTful API ](https://cdn.learnku.com/uploads/images/201910/30/18357/j72cc73JF8.png!/fw/1240) ![[实战] 使用 MongoDB Go 驱动与 Iris 构建 RESTful API ](https://cdn.learnku.com/uploads/images/201910/30/18357/ZB653gn96s.png!/fw/1240) ![[实战] 使用 MongoDB Go 驱动与 Iris 构建 RESTful API ](https://cdn.learnku.com/uploads/images/201910/30/18357/MqdmaNGqi6.png!/fw/1240) ![[实战] 使用 MongoDB Go 驱动与 Iris 构建 RESTful API ](https://cdn.learnku.com/uploads/images/201910/30/18357/mRsqZeEoIc.png!/fw/1240) ## 片段 配置加载 ``` func init() { envFileName := ".env" flagset := flag.CommandLine flagset.StringVar(&envFileName, "env", envFileName, "the env file which web app will use to extract its environment variables") flag.CommandLine.Parse(os.Args[1:]) env.Load(envFileName) } ``` 版本管理与路由分组 ``` app := iris.New() app.Use(func(ctx iris.Context) { ctx.Header("Server", "Iris MongoDB/"+version) ctx.Next() }) storeAPI := app.Party("/api/store") { movieHandler := storeapi.NewMovieHandler(movieService) storeAPI.Get("/movies", movieHandler.GetAll) storeAPI.Post("/movies", movieHandler.Add) storeAPI.Get("/movies/{id}", movieHandler.Get) storeAPI.Put("/movies/{id}", movieHandler.Update) storeAPI.Delete("/movies/{id}", movieHandler.Delete) } ```