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() } }
定义文章结构体及 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包
import ( ... "ucm/http" ) func main() { http.HttpServer() }工程结构 看看效果,小试一把
接口地址:
可以用谷歌浏览器插件json-handle格式化文章json数据
{ "id":"655505536506138624", "title":"今年端午粽子卖了多少个?答案有点惊人", "prodeptName":"湖南省" ...省略... }
json-handle传送门:
如果觉得本文对您有帮助的话,记得 关注、转发 哦,我会为大家持续提供原创干货。