gin框架中多种数据格式返回请求结果
返回四种格式的数据:1. []byte、string 2. json格式 3. html模板渲染 4. 静态资源设置
package main import (
"github.com/gin-gonic/gin"
"net/http"
) func main() {
router := gin.Default() // []byte类型格式的数据返回
router.GET("/hello", HandlerHello)
// 字符串格式的数据返回
router.GET("/string", HandlerString)
// 将map类型的数据转换成json格式
router.POST("/json_map", HandlerJsonMap)
// 将结构体类型的数据转换成json格式
router.GET("/json_struct", HandlerJsonStruct) // 设置html目录
router.LoadHTMLGlob("./templates/*")
// 返回Html
router.GET("/html", HandlerHtml) // 设置静态文件目录
// relativePath: 前端请求的路径, root: 本地工程的路径
router.Static("/static/images", "./static/images") router.Run(":8000")
}
func HandlerHtml(ctx *gin.Context) {
ctx.HTML(http.StatusOK, "index.html", gin.H{
"fullPath": ctx.FullPath(),
"title": "官方教程v2",
})
}
type Response struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}
func HandlerJsonStruct(ctx *gin.Context) {
var sj = Response{Code: 1, Message: "OK", Data: ctx.FullPath()}
ctx.JSON(http.StatusOK, &sj)
}
func HandlerJsonMap(ctx *gin.Context) {
ctx.JSON(http.StatusOK, gin.H{
"name": "老王",
"age": 55,
})
}
func HandlerString(ctx *gin.Context) {
ctx.Writer.WriteString(ctx.FullPath())
}
func HandlerHello(ctx *gin.Context) {
ctx.Writer.Write([]byte("hello byte"))
}
gin框架中多种数据格式返回请求结果的更多相关文章
- Python的Django REST框架中的序列化及请求和返回
Python的Django REST框架中的序列化及请求和返回 序列化Serialization 1. 设置一个新的环境 在我们开始之前, 我们首先使用virtualenv要创建一个新的虚拟环境,以使 ...
- gin框架中请求路由组的使用
1. gin框架中可以使用路由组来实现对路由的分类 package main import "github.com/gin-gonic/gin" func main() { rou ...
- 在gin框架中使用JWT
在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. 什么 ...
- golang gin框架中实现一个简单的不是特别精确的秒级限流器
起因 看了两篇关于golang中限流器的帖子: Gin 开发实践:如何实现限流中间件 常用限流策略--漏桶与令牌桶介绍 我照着用,居然没效果-- 时间有限没有深究.这实在是一个很简单的功能,我的需求是 ...
- gin框架中的路由
基本路由 gin框架中采用的路由库是基于httrouter做的 地址为:https://github.com/julienschmidt/httprouter httprouter路由库 点击查看代码 ...
- gin框架中请求参数的绑定与多数据格式处理
package main import ( "fmt" "github.com/gin-gonic/gin" ) // gin框架提供给开发者表单实体绑定的功能 ...
- gin框架中中间件的编写与使用
概念 一个完整的系统可能包括鉴权认证.权限管理.安全检查.日志记录等多维度的系统支持. 中间件位与服务器和实际业务处理程序之间,其含义就相当于在请求和具体的业务处理逻辑之间增加某些操作,这种以额外增加 ...
- 【解决了一个小问题】gin框架中出现如下错误:"[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 500"
POST到数据到一条gin框架的接口后,客户端收到400错误,并且返回了业务中返回的"decode json fail". 关键代码是: func report(c *gin.Co ...
- gin框架中的参数验证
结构体验证 用gin框架的数据验证,可以不用解析数据,减少if else,会简洁许多. 处理请求方法 func structValidator(context *gin.Context) { var ...
随机推荐
- Spring Boot定时任务配置
import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.a ...
- SpringBoot 处理跨域请求问题
增加一个配置类 import org.springframework.context.annotation.Bean; import org.springframework.context.annot ...
- Hibernate 限制查询数目,使用limit功能
在hql语句中,不能使用limit来限制显示的条数. 如果要限制查询的数目,要使用setMaxResults(e)方法来解决. query.setFirstResult(e); //e是int值,要 ...
- soui(1)之一个半透明的窗口
一个样式 xml源码 <SOUI name="mainWindow" title="@string/title" bigIcon="ICON_L ...
- c++参数入栈顺序和参数计算顺序
关于 本文涉及到代码,演示环境为:win10 + VS2017 ,ubuntu+clang clang版本: 参数入栈顺序 顺序 几种常见的函数参数入栈顺序,还有两种就不介绍了(__clrcall._ ...
- 1079 - Just another Robbery
1079 - Just another Robbery PDF (English) Statistics Forum Time Limit: 4 second(s) Memory Limit: 3 ...
- 亲测:三个值得练手的Java实战项目
测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...
- Spring Boot + MyBatis + MySQL 实现读写分离
读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做. 读写分离有两种实现方式: 第一种是依靠中间件(比如:MyCat ...
- 第十个知识点:RSA和强RSA问题有什么区别?
第十个知识点:RSA和强RSA问题有什么区别 这个密码学52件事数学知识的第一篇,也是整个系列的第10篇.这篇介绍了RSA问题和Strong-RSA问题,指出了这两种问题的不同之处. 密码学严重依赖于 ...
- request参数获取,参数校验,参数处理
需求: 1.post接口,需要在过滤器中进行参数校验,校验通过之后再执行方法 2.原有代码中使用x-www-form-urlencoded传参,新需求要使用json格式 3.原有代码校验过滤器使用Se ...