gin BindJSON
r:=gin.New()
r.GET("/", func(c *gin.Context) {
var cc SSHconfig
if err:=c.BindJSON(&cc);err!=nil{
log.Println(err)
}
var (
//u model.CoreAccount
p model.CoreGrained
//groupList []model.CoreRoleGroup
//s model.CoreGlobalConfiguration
)
model.DB().Debug().Select("`group`").Where("username =?", cc.Username).First(&p)
c.AbortWithStatusJSON(200,gin.H{"OK":true,"data":p.Group})
})
r.Run("127.0.0.1:8000")
}
只能在raw访问,有点想不明白?
我们后端用的是go的gin server,一共部署3个实例。
package main
import (
"github.com/gin-gonic/gin"
"flag"
"strconv"
"fmt"
)
func GetResult(c *gin.Context) {
a,_ := strconv.Atoi(c.Query("a"))
b,_ := strconv.Atoi(c.Query("b"))
uid := c.Request.Header.Get("uid")
requestid := c.Request.Header.Get("requestid")
fmt.Printf("uid=%s\n", uid)
fmt.Printf("requestid=%s\n", requestid)
result := a+b
c.JSON(200, gin.H{
"result": result,
})
}
func main() {
var port string
flag.StringVar(&port, "p", "7777", "port")
flag.Parse()
r := gin.Default()
// 普通用户接口
r.GET("/get_result_http", GetResult)
r.Run(":" + port)
}
启动
./gin_server -p 7776 &
./gin_server -p 7777 &
./gin_server -p 7778 &
在APISIX的Dashboard 配置以下路由
配置插件
把我们的my-rewrite-response配置进去,这里tag先不配值。
{
"conf": [
{
"name": "my-rewrite-response",
"value": "{\"tag\":\"\"}"
}
]
}
提交后尝试请求APISIX,看到返回的header带上了responseid。
root@JamesLee:/mnt/d/code/apisix_test/gin_server# curl -i "http://127.0.0.1:9080/get_result_http?a=6&b=3" -H 'username: lijunshi' -H 'password: lijunshipwd'
HTTP/1.1 200 OK
Date: Sun, 12 Mar 2023 12:56:49 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
responseid: 409384d5-0985-486b-be34-5627628a266e
Server: APISIX/3.1.0
{"result":9}
my-rewrite-response配置为
{
"conf": [
{
"name": "my-rewrite-response",
"value": "{\"tag\":\"hello my-rewrite-response\"}"
}
]
}
再次请求,这时header和body都被改写了。
root@JamesLee:/mnt/d/code/apisix_test/gin_server# curl -i "http://127.0.0.1:9080/get_result_http?a=6&b=3" -H 'username: lijunshi' -H 'password: lijunshipwd'
HTTP/1.1 200 OK
Date: Sun, 12 Mar 2023 12:58:06 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
responseid: 5641684d-d4eb-4789-98ea-fbf1c96fd919
Server: APISIX/3.1.0
hello my-rewrite-response
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-04-07 ansible playbook -include
2021-04-07 Ansible Playbook循环语句
2021-04-07 ansible非role格式
2021-04-07 ansible playbook如何处理错误(block-rescue-always)
2021-04-07 ansible 批量更新 nginx 配置,以及失败时的自动回滚样例
2021-04-07 systemctl启动服务时,配置日志输出控制