构建API接口
在Go语言中,构建API的过程应该是:创建路由、处理请求和响应。以下将使用net/http包的函数,来演示:
打开浏览器后,在地址栏输入:localhost:8888/就会看到“hello world”。
分析
什么是URL
这是一个URL示例:https://www.example.com:8080/articles?pa… 在这个示例中:
- 协议是https
- 主机名是www.example.com(有时,这里也会放IP地址)。表示了服务器的域名或地址。
- 端口是8080。
- 路径是/articles。表示了资源在服务器上的具体路径
- 查询的参数是page=2和category=tech。
- 片段表示是section-3。
设置路由
在主函数中,我们首先使用http.HandleFunc来设置路由,将特定的路径,即URL映射到需要处理的函数,即图中的Handler函数。那么,什么是设置路由呢?举个例子,当你正在开发一个博客网站,你希望不同的URL上显示了不同的页面,而页面对应的功能也不一样。为此,你需要将URL路径映射到相应的处理函数,来实现你的功能。
处理函数
现在,我们来分析处理函数Handler。它有两个参数w http.ResponseWriter和r *http.Request,分别用于写入响应和代表接收到请求。函数内部,我们打印了“hello world”。这里有人可能会问,为什么不是用fmt.Printf,而是用fmt.Fprintf呢?虽然这两者都是格式化打印,但前者的作用是打印到标准输出(终端),而后者是将内容写入到指定的输出流(文件、网络连接、缓冲区等)。
启动服务器并监听端口
http.ListenAndServe函数用于启动一个http服务器,并监听填入的端口。图中我们填入的是8888端口,实际“:”前可以填IP地址,这里我没填,意味着IP地址不受限制,任何IP都可以访问。至于第二个参数为什么填nil,这是因为填入nil后,我们将使用默认的路由器,这个路由器会使用http.DefaultServeMux,将请求映射到http.HandleFunc中的处理函数。
用户认证
下面,我将使用JWT(Json Web Token)来实现用户认证。首先我们需要在终端中输入go get github.com/dgrijalva/jwt-go
获取token
解析token
集成
让我们来分析一下实现的逻辑。首先注册一个路由,对外提供让我们获得Token,然后我们需要创建一个中间件来验证客户的Token是否正确,如果正确则可以在收保护的路由中继续使用。