使用swagger生成golang服务器
程序员文章站
2024-03-03 19:21:40
...
使用swagger生成golang服务器
样例介绍
本次试验是借助swagger实现一个golang http服务器,前端使用vue的富文本框架。
服务器内容为一个简单的博客网站,具体实现功能页面有:
- 查询所有用户 /users
- 查询指定用户的所有文章 /articles/{userName}
- 根据文章标签筛选指定用户的文章 /articles/{userName}/{tag}
- 根据文章标题查询文章 /article/{title}
yaml文件
举一个例子来说:
paths:
/users:
get:
tags:
- "user"
summary: "Get all the users"
operationId: "getAllUsers"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "successful operation"
schema:
type: "array"
items:
$ref: "#/definitions/User"
"400":
description: "Invalid status value"
获得的数据将会以json的格式发送到客户端并被展示出来。这里只是简单地将json格式数据输出到界面上。
该文件也指定了数据的存储方式。
definitions:
Article:
type: "object"
properties:
author:
type: "string"
title:
type: "string"
urlPath:
type: "string"
tags:
type: "array"
items:
type: "string"
xml:
name: "Article"
上述的文章类型数据保存了文章的 作者,标题,资源路径以及标签 。
这些数据将会持久化到数据库中去。
为了不让数据库存储的信息过于庞大以导致查询时间变长,这里只保存文章的 url路径 。因此前端的设计思路为:
- 在查询一个类型的多篇文章时,只显示文章的标题(当然这里还可以额外存储文章的概要),并将每个标题作为一个链接指向一个url。这样当点击某个标题时,前端将会发送一个数据请求,后端通过该url从特定位置获取文章的二进制流并发送给前端。前端将其渲染在一个单独的页面。
- 通过标题查询某篇文章时,服务器将直接获取文章主题内容并发送给前端。
该程序由于未设计注册登录功能,因此用户类型只存在 名称和文章标题数组 两个数据类型。
生成golang server
通过swagger editor自动生成的golang服务器已经根据yaml中的内容写好了路由器于启动器。
var routes = Routes{
Route{
"Index",
"GET",
"/",
Index,
},
Route{
"FindByAuthorTag",
strings.ToUpper("Get"),
"/articles/{userName}/{tag}",
FindByAuthorTag,
},
Route{
"FindByTitle",
strings.ToUpper("Get"),
"/article/{title}",
FindByTitle,
},
Route{
"FindByUserName",
strings.ToUpper("Get"),
"/articles/{userName}",
FindByUserName,
},
Route{
"GetAllUsers",
strings.ToUpper("Get"),
"/users",
GetAllUsers,
},
}
数据的json模型也在model_xxx.go中创建好,这样的话只需要在api_xxx.go文件中写入逻辑部分即可。
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
Bytes, err := ioutil.ReadFile("./resources/user.json")
if err != nil {
log.Fatalln(err)
}
前端界面
前端使用vue的axios插件来进行ajax通信,从而将接受数据渲染在对应位置。
getUser: function () {
axios({
method: 'get',
url: 'users'
}).then(function(res) {
this.users = res.data;
})
}
上一篇: Golang项目创建
下一篇: Python矩阵常见运算操作实例总结
推荐阅读