您的位置 首页 golang

跟我学golang学习笔记:基于gin-gonic设计api接口

安装gin-gonic包

go get github. com /gin-gonic/gin
 

工程中引入gin-gonic和http包

import (
 "github.com/gin-gonic/gin"
 "net/http" 
)
 

配置http监听端口:8081和定义文章接口路由地址

配置http监听端口

func HttpServer() {
  router  := gin.Default()
 // 设置跨域
 router.Use( cors ()) 
 ua := router.Group("/api/v1/articles")
 {
 ua.GET("/:uid/:sid", apis.GetUserArticleList)
 }
 router.Run(":8081")
}
 

配置跨域请求cors

func Cors() gin.HandlerFunc {
 return func(c *gin.Context) {
 method := c.Request.Method
 c. Header ("Access-Control-Allow-Origin", "*")
 c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token")
 c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
 c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
 c.Header("Access-Control-Allow-Credentials", "true")
 if method == "OPTIONS" {
 c.AbortWithStatus(http.StatusNoContent)
 }
 // 处理请求
 c.Next()
 }
} 
 

定义 api接口

定义文章结构体及 json 输出字段

type ArticleVO struct {
 /**
 * 文章id
 */
 id string `json:"id"`
 /**
 * 文章标题
 */
 title string `json:"title"`
 /**
 * 文章摘要
 */
 summary string `json:"summary"`
 /**
 * 省分名称
 */
 prodeptName string `json:"prodeptName"`
 /**
 * 文章样式Id
 */
 contentId string `json:"contentId"`
 /**
 * 文章样式
 */
 content string `json:"content"`
 /**
 * 是否置顶
 */
 isTop bool `json:"isTop"`
 /**
 * 所属父级分类名称
 */
 pcategoryname string `json:"pcategoryname"`
 /**
 * 所属父级分类名称
 */
 pcategoryid string `json:"pcategoryid"`
 /**
 * 分类名称
 */
 categoryname string `json:"categoryname"`
 /**
 * 分类ID
 */
 categoryId string `json:"categoryId"`
 /**
 * 文章起草者
 */
 createUserId string `json:"createUserId"`
 /**
 * 文章起草名称
 */
 createUserName string `json:"createUserName"`
 /**
 * 是否是集团新闻
 */
 isHeadgroup bool `json:"isHeadgroup"`
 /**
 * 阅读量
 */
 readCount int64 `json:"readCount"`
 /**
 * 重要性:1#普通,2#普通,3#重要,4#非常重要
 */
 vital int `json:"vital"`
 /**
 * 发布开始时间
 */
 publishBeginTime string `json:"publishBeginTime"`
 /**
 * 发布结束时间
 */
 publishEndTime string `json:"publishEndTime"`
 /**
 *是否显示0不显示1显示
 */
 isHide int `json:"isHide"`
 /**
 * 是否推荐(1-是,0-否)
 */
 isRecommend bool `json:"isRecommend"`
}
 

引入gin-gonic和json包

import (
 ...
 "encoding/json"
 "github.com/gin-gonic/gin"
 ...
)
 

定义获取文章列表接口

func GetUserArticleList(c *gin.Context) {
 uid := c.Param("uid")
 sid := c.Param("sid")
 key := common.USER_ART_PREFIX + ":" + uid + ":" + sid
 jsonStr := ctx.Godis.Get(key)
 log.Println(jsonStr)
 articleData := make([]map[string]interface{}, 0)
 json.Unmarshal([] byte (jsonStr), &articleData)
 c.JSON(200, articleData)
}
 

通过gin.Context上下文获取从客户端获取请求参数uid:用户id和sid:岗位id,通过key获取缓存用户文章列表json字符串。通过json.Unmarshal方法反序列化成map,以json格式返回客户端。

启动http server

引入http包

import (
 ...
 "ucm/http"
)
func main() { 
 http.HttpServer()
}
 

工程结构

看看效果,小试一把

接口地址:

 

可以用谷歌浏览器插件json-handle格式化文章json数据

{
 "id":"655505536506138624",
 "title":"今年端午粽子卖了多少个?答案有点惊人",
 "prodeptName":"湖南省"
 ...省略...
}
 

json-handle传送门:

如果觉得本文对您有帮助的话,记得 关注、转发 哦,我会为大家持续提供原创干货。

文章来源:智云一二三科技

文章标题:跟我学golang学习笔记:基于gin-gonic设计api接口

文章地址:https://www.zhihuclub.com/86563.shtml

关于作者: 智云科技

热门文章

发表评论

您的电子邮箱地址不会被公开。

网站地图