赞
踩
学习了一些基础知识了,那么重要的来了,那就是网络编程,简单的来说,先来一个后端的接口吧,当然这也得结合我们的包结构等。
这个就比较简单了,按照我们一般的web编程,主要包结构就只有controller、service、mapper(repository)三层,还有一些其他的比如说config、utils这些非必须的本章就不做多的赘述,建好如下包结构
暂时没有用到数据库所有repository可能暂时没用哦
// 指定端口号为80,启动服务后不报错,服务就会一直运行下去 func main() { err := http.ListenAndServe(":80", nil) if err != nil { log.Fatalln(err) } } // 当然也可以使用defer进行异常捕获 func main() { defer func() { if err := recover(); err != nil { fmt.Println(err) } }() err := http.ListenAndServe(":80", nil) if err != nil { log.Fatalln(err) } }
还有一个重要的,请求路径的监听
func main() {
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
// 请求路径为 /test的请求,调用controller包下的helloController的Hello方法
http.HandleFunc("/hello", controller.HelloController.Hello)
err := http.ListenAndServe(":80", nil)
if err != nil {
log.Fatalln(err)
}
}
// 包名,文件生成时自动填充 package controller // 导入的依赖 import ( "awesomeProject/service" "fmt" "net/http" ) var HelloController = newHelloController() type helloController struct { } func newHelloController() *helloController { return &helloController{} } // 指定方法 func (c *helloController) Hello(r http.ResponseWriter, q *http.Request) { method := q.Method fmt.Println(method) fmt.Fprintf(r, service.HelloService.Hello()) }
package service
type helloService struct {
}
var HelloService = newHelloService()
func newHelloService() *helloService {
return &helloService{}
}
func (s *helloService) Hello() string {
// 自己的业务处理
return "hello"
}
现在我们就可以开始使用postman调用或者其他调用,来测试我们的接口了
可以看到,接口调用成功,并且有返回值了
这里我们也取到了请求方式。
controller中的方法为什么入参是ResponseWriter和Request呢
HandleFunc这个方法规定了第二个参数方法必须要有什么入参
// 这个方法规定的入参
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
DefaultServeMux.HandleFunc(pattern, handler)
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。