构建 API 接口和用户认证的实践指南|青训营

21 阅读2分钟

1 构建API接口

1.1 构建基础API

首先,我们必须创建一个非常简单的服务器来处理HTTP请求。为此,我们创建一个名为main.go的新文件。 在这个main.go文件中,我们将要定义3个不同的函数。一个page函数(将处理对我们根URL的所有请求),router函数(将与已定义函数匹配的URL路径匹配)和main函数(将启动我们的API)

package main import (     "fmt"    "log"    "net/http" ) func page(w http.ResponseWriter, r *http.Request){    fmt.Fprintf(w, "Hello!") } func router() {    http.HandleFunc("/", page)    log.Fatal(http.ListenAndServe(":8080", nil)) } func main() {    router() }

1.2使用Gin优化接口

安装Gin

go get -u github.com/gin-gonic/gin 过程

  1. 客户端请求服务器
  2. HTTP 服务引擎 http.Server 接收到请求,并初步处理成 http.ResponseWriter 和 http.Request 并传递给注册过的上层请求处理
  3. Handler(实现 ServerHTTP 接口,并注册到 http.ListenAndServe 的 Handler)(即 Gin 的 Engine)
  4. Engine 把请求数据放入 Context pool 中,并传递给 Engine 的 handleHTTPRequest 进行处理
  5. handleHTTPRequest 从 trees 中查找对应的 node,并回调注册过的请求处理 Handler

先初始化

2 用户认证

安装jwt包

post请求get请求的区别

  • GET请求会把请求参数拼接到URL后面,而POST请求则是将请求参数放在请求体中发送。因此,GET请求的请求参数会暴露在URL中,而POST请求的请求参数不会。
  • GET请求通常用于请求资源,而POST请求通常用于提交数据。GET请求会向服务器请求一个资源(如HTML页面或者图片),而POST请求则是向服务器提交表单数据或者上传文件等操作。
  • GET请求的请求参数长度受到URL长度限制,通常不能超过2048个字符。而POST请求的参数长度通常没有严格限制,可以传输更大的数据量。
  • GET请求是幂等的,也就是说,多次相同的GET请求返回的结果应该是一样的。而POST请求不是幂等的,即使发送相同的请求数据,每次响应可能都不同。

GET请求适合用于查询数据,POST请求适合于提交数据。

token的组成:

一共由三部分组成:

  1. 协议头(header):token使用的加密协议
  2. 荷载:储存的是token发放时间、发放人、主题等信息
  3. 第三部分:前面两部分+key进行hash的一个值