package main
import("github.com/gin-gonic/gin""net/http")funcmain(){// 1:实例化默认路由
r := gin.Default()// 2: 编写路由处理函数
r.GET("/hello",func(context *gin.Context){
context.String(http.StatusOK,"hello world!!!")})// 3: 路由监听端口
r.Run(":8080")}
请求:
二:请求参数
2.1: API参数
API参数: 参数写在路径中。
注意:
1: 一般用冒号 + 路径参数名称来划分。 冒号的作用是可以让Param方法取到后面的数据。
2: 如果是用星号 + 路径名称,则获取到的是包含路径斜杠+后续的所有内容的。
案例一:
package main
import("github.com/gin-gonic/gin""net/http")funcmain(){// 1:实例化默认路由
r := gin.Default()// 2: 编写路由处理函数
r.GET("/user/:name/:action",func(context *gin.Context){
name := context.Param("name")
action := context.Param("action")
context.String(http.StatusOK,"name is "+name+", action is "+action+"。")})// 3: 路由监听端口
r.Run(":8080")}```
- 结果, 发送请求:http://127.0.0.1:8080/user/renshanwen/reading
案例二:
package main
import("github.com/gin-gonic/gin""net/http")funcmain(){// 1:实例化默认路由
r := gin.Default()// 2: 编写路由处理函数
r.GET("/user/*name_action",func(context *gin.Context){
nameAction := context.Param("name_action")
context.String(http.StatusOK,"name_action is "+nameAction)})// 3: 路由监听端口
r.Run(":8080")}
2.2: URL参数
URL参数:参数写在请求k-v对中。
使用Query()函数获取参数信息, 获取不到默认获取到空字符串。
案例
package main
import("github.com/gin-gonic/gin""net/http")funcmain(){// 1:实例化默认路由
r := gin.Default()// 2: 编写路由处理函数
r.GET("/user",func(context *gin.Context){
name := context.Query("name")
age := context.Query("age")
context.String(http.StatusOK,"name is "+name+" age is "+age+".")})// 3: 路由监听端口
r.Run(":8080")}
2.3: 表单参数
POST请求中的信息, 一般是JSON数据。
使用PostForm函数在表单中获取数据。
案例:
package main
import("github.com/gin-gonic/gin""net/http")funcmain(){// 1:实例化默认路由
r := gin.Default()// 2: 编写路由处理函数
r.POST("/user",func(context *gin.Context){
name := context.PostForm("name")
age := context.PostForm("age")
context.String(http.StatusOK,"name is "+name+" age is "+age+".")})// 3: 路由监听端口
r.Run(":8080")}
解析JSON数据
案例:
package main
import("github.com/gin-gonic/gin""net/http""strconv")funcmain(){// 1:实例化默认路由
r := gin.Default()// 定义一个User结构体type User struct{
Name string`json:"name"`
Age int64`json:"age"`}// 2: 编写路由处理函数
r.POST("/user",func(context *gin.Context){// 实例化User
reqData := User{}// 将内容绑定到字典中
context.BindJSON(&reqData)// 构造响应
context.String(http.StatusOK,"name is "+reqData.Name+" age is "+strconv.FormatInt(reqData.Age,10)+".")})// 3: 路由监听端口
r.Run(":8080")}
条件:ML100k.data
注意:程序对列表进行修改,为避免列表索引出现问题,避免使用for i in range(len(data)),而使用for i in data可避免这一问题
import pickle
data []
with open("ML100k.data", r) as file:for line …