序言
随着客户端准备完毕,工作很快到了服务端编程。服务端的程序将是整个项目的核心,从单体架构开始,围绕一成不变的“道”,我将进行业务拆分。在整个过程中体会编程的乐趣,就像拧魔方一样,简单到复杂,纷乱到整齐。虽然做过太多这样的业务,但是自己的项目想想都让人激动。
准备工作
服务端准备
1. 语言
go,选择它是因为在高性能分布式系统领域有很好的开发效率
2. 框架
无
3. vscode
虽然它有点坑,但是习惯了。
目录结构
源码展示
考虑到项目处于成长阶段,放上部分源码。
路由
在这里我要提供http服务,注册对应的路由,提供客户端请求。
在业务初始,创建了简单的路由服务原型,随着业务发展,它处于成长阶段。
api规则说明
package apiResult
// 本模块实现了api格式的说明以及返回格式的定义
import (
"encoding/json"
"net/http"
"time"
)
// JsonRes ...
type JsonRes struct {
Errcode int `json:"errcode"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
TimeStamp int64 `json:"timestamp"`
}
// Success...
func Success(w http.ResponseWriter, msg string, data interface{}) {
body, _ := json.Marshal(JsonRes{
Errcode: 0,
Msg: msg,
Data: data,
TimeStamp: time.Now().Unix(),
})
w.Write(body)
}
// Error...
func Error(w http.ResponseWriter, errcode int, msg string, data interface{}) {
body, _ := json.Marshal(JsonRes{
Errcode: errcode,
Msg: msg,
Data: data,
TimeStamp: time.Now().Unix(),
})
w.Write(body)
}
http服务
package httpServer
import (
"net/http"
"gitee.com/yangkaiqianggitee/http-server/httpServer/apiRouter"
)
func Run(addr string) {
srv := http.Server{
Addr: addr,
Handler: http.HandlerFunc(apiRouter.Register),
}
srv.ListenAndServe()
}
租赁业务
package lease
import (
"go-server/service"
"net/http"
"gitee.com/yangkaiqianggitee/http-server/httpServer/apiResult"
)
func List(w http.ResponseWriter, r *http.Request) {
leases, err := service.GetLeaseList()
if err != nil {
apiResult.Error(w, 50001, "获取失败,请稍后重试", "")
return
}
apiResult.Success(w, "success", leases)
}
编译运行
go提供了build参数,太棒了,结合nohup,服务快速上线
作者的话
整篇文章适合有基础的开发者,如果哪里不明白可以给作者留言~~。
如果你对项目分析设计感兴趣,可以阅读前五篇文章:
服务器托管项目一(可行性研究报告)
服务器托管项目二(项目开发计划书)
服务器托管项目三(需求规划说明书)
服务器托管项目四(概要设计说明书)
服务器托管项目四(概要设计说明书)