利用Go语言初步搭建一个web应用的教程

2020-01-28 11:39:45王振洲

1.Abstract

在学习web开发的过程中会遇到很多困难,因此写了一篇类似综述类的文章。作为路线图从web开发要素的index出发来介绍golang开发的学习流程以及Example代码。

在描述中多是使用代码来描述使用方法不会做过多的说明。最后可以方便的copy代码来实现自己的需求。

本文适应对象:

    对web开发有一定经验的人     能够灵活使用ajax的人(至少懂得前后分离)     golang web 开发有一定了解,至少略读过一些golang web开发的书籍

看完本文之后您会收获:

    golang web开发的一些技巧     golang web开发的一些实用API

本文在描述的时候为了解释尽量详细,已经把解释写到代码注释中。
2.golang web 开发check list

    略过的部分:基本流程控制,OOP等基础语法知识。

3.路由器

    路由器是整个网站对外的灵魂,如果路由做的不好URL会非常恶心。所以这部分设计成第一个要说的内容。

    路由分两种一种是手动路由为了通过tul调度固定的功能,另外一点就是资源的获取,通过url的分析来模仿静态页的方式来获取资源(类似get)

    自动路由,主要使用OOP的COMMAND模式来实现。所有功能使用post,统一入口,方便权限管理,安全管理,跨域管理。但是如此强大的功能还是交给框架来做吧。这里就不给新手做参考了。

3.1手动路由

    package main
    import (
      "log"
      "net/http"
      )
      func main() {
        RouterBinding() // 路由绑定函数
        err := http.ListenAndServe(":9090", nil) //设置监听的端口
        if err != nil {
          log.Fatal("ListenAndServe: ", err)
        }
      }

在httpserver运行之前先绑定路由
3.2 手动路由的绑定
3.2.1 静态文件

    http.Handle("/pages/", http.StripPrefix("/pages/", http.FileServer(http.Dir("./pages"))))

3.2.2 固定函数与资源获取

他们都是一样的

    http.HandleFunc("/images/", fileUpload.DownloadPictureAction)

4.页面加载
4.1 纯静态页(HTML)

    直接交给路由就行了。自动就访问那个文件夹了。不过生产环境果然还得是cdn,如果自己服务器比较多。可以nginx反向代理。