iris初始化项目
我找到的文档
mkdir myapp
cd myapp
go mod init myapp
对
go mod
不是很清楚的可以看这篇
go get github.com/kataras/iris/v12@latest
如果出现以下问题,可以尝试go env -w GOPROXY=https://goproxy.io,direct
go env -w GOPROXY=https://goproxy.io,direct
出现上图的一些依赖和
go.sum
说明下载成功
创建一个对象(可以不创建)
type Anime struct{Fid int `json:"fid"`Name string `json:"name"`
}
iris服务编写
func IrisLink(){app := iris.New()//创建iris服务app.Get("/",func(ctx iris.Context){hello := make(map[string]string,1) //maphello["message"] = "hello this is go-iris app"ctx.JSON(hello)})//使用结构体app.Get("/anime",func(ctx iris.Context){animes := []Anime{{Fid:0,Name:"刀剑神域"},{Fid:1,Name:"野良神第一季"},{Fid:2,Name:"孤独摇滚"},}ctx.JSON(animes)})//监听端口8888app.Listen(":8888")
}
动态路由
参考文档
app.Get("/test_update/{name}",func(ctx iris.Context){ctx.Writef("Hello %s", ctx.Params().Get("name"))
})
对动态路由进行约束
参考文档
app.Get("/test_update/{textId:int min(0)}",func(ctx iris.Context){textId,_ := ctx.Params().GetInt("textId")ctx.Writef("id=%d",textId)
})
id=0;
id=1;
Not Found(id=-1);
完整代码
package myIrisimport "github.com/kataras/iris/v12"type Anime struct{Fid int `json:"fid"`Name string `json:"name"`
}func IrisLink(){app := iris.New()app.Get("/",func(ctx iris.Context){hello := make(map[string]string,50)hello["message"] = "hello this is go-iris app"ctx.JSON(hello)})app.Get("/anime",func(ctx iris.Context){animes := []Anime{{Fid:0,Name:"刀剑神域"},{Fid:1,Name:"野良神第一季"},{Fid:2,Name:"孤独摇滚"},}ctx.JSON(animes)})app.Get("/test_update/{textId:int min(0)}",func(ctx iris.Context){textId,_ := ctx.Params().GetInt("textId")ctx.Writef("id=%d",textId)})app.Listen(":8888")
}
其余(用react来连接)
#npm i axios
yarn add axios
//vite.config.js
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'// https://vitejs.dev/config/
export default defineConfig({plugins: [react()],server: {proxy:{'/go-api':{target: "http://127.0.0.1:8888/",changeOrigin:true,rewrite: path=> path.replace(/^\/go-api/,'')}}}
})
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import axios from 'axios'function App() {const [count, setCount] = useState(0)const getGoTcp01 = () =>{axios.get('/go-api/anime').then(res=>{console.log(res.data)}).catch(err=>console.log(err))}return (<div><button onClick={()=>getGoTcp01()}>点击请求</button></div>)
}export default App