当前位置: 首页 > wzjs >正文

上海网络公司网站建设多用户建站系统源码

上海网络公司网站建设,多用户建站系统源码,网络网站推广选择乐云seo,个人风采网站制作文章目录 安装使用RESTful API响应页面获取请求参数路由讲解中间件 安装使用 Gin 是一个 golang 的微框架,封装比较优雅,API 友好,源代码比较明确。具有快速灵活,容错方便等特点。其实对于 golang 而言,web 框架的依赖…

文章目录

    • 安装使用
    • RESTful API
    • 响应页面
    • 获取请求参数
    • 路由讲解
    • 中间件

安装使用

  • Gin 是一个 golang 的微框架,封装比较优雅,API 友好,源代码比较明确。具有快速灵活,容错方便等特点。其实对于 golang 而言,web 框架的依赖远比 python,java 之类的要小。自身的 net/http 足够简单,性能也非常不错。框架更像是一个常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
  • Gin 官方文档地址:https://gin-gonic.com/zh-cn.docs
  • 安装 Gin:
go get -u github.com/gin-gonic/gin
  • 在 windows 10 系统中,安装 Go1.19 之后的版本,然后打开 go module,在命令行终端中输入:go env -w GO111MODULE=on
  • 修改指定的代理,在命令行终端中输入:go env -w GOPROXY=https:/lgoproxy.io,direct
package mainimport "github.com/gin-gonic/gin"
import "github.com/thinkerou/favicon"func main() {// 创建一个服务ginServer := gin.Default()// 为网页标签导入一个iconginServer.Use(favicon.New("path/to/your/icon"))// 连接数据库的代码// 访问地址,处理请求 Request ResponseginServer.GET("/hello", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "Hello World!"})})// gin.H 其实就是一个 map[string]any// 服务器端口ginServer.Run(":8082")
}

RESTful API

  • RESTful API(Representational State Transfer API)是一种基于REST架构风格的网络应用编程接口,它通过HTTP协议进行通信,常用于Web服务的实现。RESTful API遵循一些基本的设计原则,使得服务更加灵活、简单和易于维护。
  • REST的核心思想是通过定义资源(Resource)并通过HTTP动词(GET、POST、PUT、DELETE等)对资源进行操作。
// 以前写网站
get /user
post /create_user
post /update_user
post /delete_user// RESTful API
get /user
post /user
put /user
delete /user
  • GET:获取资源,不修改服务器上的数据。
  • POST:创建新的资源,通常用于提交数据。
  • PUT:更新资源,用于替代现有资源。
  • DELETE:删除资源。
  • PATCH:部分更新资源。
	// 访问地址,处理请求 Request Response// Gin RestFul 十分简单ginServer.GET("/hello", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "Hello World!"})})ginServer.POST("/user", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "Post user"})})ginServer.PUT("/user", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "Put user"})})ginServer.DELETE("/user", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "Delete user"})})

响应页面

	// 加载静态页面(全局加载)ginServer.loadHTMLGlob("templates/*")// 加载资源文件gin.Server.Static("./static","./static")// 响应一个页面给前端ginServer.GET("/index", func(context *gin.Context) {// context.JSON()  json数据context.HTML(http.StatusOK, "index.html", gin.H{"msg":"This is the data form server."})//  前端用 {{.msg}} 赋值表达式即可取出})

获取请求参数

  • url?userid=1&username=z3,url传参方式
	ginServer.GET("/user/info", func(context *gin.Context) {userid := context.Query("userid")username := context.Query("username")context.JSON(http.StatusOK, gin.H {"userid":userid,"username":username,})})
  • url/user/info/1/z3,RestFul风格请求参数
	// :就可以直接取出这个值了ginServer.GET("/user/info/:userid/:username", func(context *gin.Context) {userid := context.Param("userid")username := context.Param("username")context.JSON(http.StatusOK, gin.H {"userid":userid,"username":username,})})
	// 前端给后端传递 jsonginServer.GET("/json", func(context *gin.Context) {// request.bodyb, _ := context.GetRawData()var m map[string]interface{}// 返回的是byte切片,包装为json数据_ = json.Unmarshal(b, &m)context.JSON(http.StatusOK, m)})// 处理表单ginServer.GET("/user/add", func(context *gin.Context) {username := context.PostForm("username")password := context.PostForm("password")// 校验逻辑,略context.JSON(http.StatusOK, gin.H {"msg":"ok","username":username,"password":password,})})

路由讲解

	ginServer.GET("/json", func(context *gin.Context) {// 重定向context.Redirect(http.StatusMovedPermanently, "https://www.4399.com")})
	// 404 NoRouteginServer.NoRoute(func(context *gin.Context) {context.Redirect(http.StatusNotFound, "404.html", nil)})
	// 路由组userGroup := ginServer.Group("/user"){userGroup.POST("/add", func)userGroup.POST("/login", func)userGroup.POST("/logout", func)}orderGroup := ginServer.Group("/order"){orderGroup.POST("/add", func)orderGroup.DELETE("/delete", func)}

中间件

	// go中间件可以进行预处理,登录授权、验证、分页等// 自定义go中间件 拦截器func myHandler() (gin.HandlerFunc) {return func(context *gin.Context) {// 通过自定义的中间件,设置的值在后续处理只要调用了这个中间件都可以拿到这里的值context.Set("usersession", "userid-1")if condition {context.Next() // 放行} else {context.Abort() // 阻止}}}ginServer.GET("/user/info", myHandler(), func(context *gin.Context) {// 取出中间件中的值usersession := context.MustGet("userSession").(string)log.Println("userSession", usersession)userid := context.Query("userid")username := context.Query("username")context.JSON(http.StatusOK, gin.H {"userid":userid,"username":username,})})

文章转载自:

http://k0fMtffs.tbLbr.cn
http://80HT0Xus.tbLbr.cn
http://KvCKZznv.tbLbr.cn
http://bKyBHuhN.tbLbr.cn
http://5vlNvUPI.tbLbr.cn
http://gbo3fHka.tbLbr.cn
http://NW6oYgqH.tbLbr.cn
http://fb6JutKy.tbLbr.cn
http://Ksv85ne9.tbLbr.cn
http://70GEOBVe.tbLbr.cn
http://CvkNx3T1.tbLbr.cn
http://qU9ZgiyJ.tbLbr.cn
http://prwhPR1D.tbLbr.cn
http://lKhMvcue.tbLbr.cn
http://dYiDi8FY.tbLbr.cn
http://h5L8sQPM.tbLbr.cn
http://gZyOkpSn.tbLbr.cn
http://4m8KUt8M.tbLbr.cn
http://90uCsSo1.tbLbr.cn
http://QL3yXvrx.tbLbr.cn
http://Knzut9qm.tbLbr.cn
http://tn9LXJtN.tbLbr.cn
http://QGZ2k1uQ.tbLbr.cn
http://5Ve5DFZA.tbLbr.cn
http://y7fs9xI2.tbLbr.cn
http://9kL14WfL.tbLbr.cn
http://1RcQZOBH.tbLbr.cn
http://mXwxYhob.tbLbr.cn
http://zuQCBtyv.tbLbr.cn
http://riW2MFhT.tbLbr.cn
http://www.dtcms.com/wzjs/642043.html

相关文章:

  • 用visual做网站网站套站是什么意思
  • 做彩票网站制作苏州新闻今天最新消息新闻事件
  • 网站用什么软件seo排名优化如何推广自己的店铺
  • 没有网站服务器空间如何用ftp建设政务网站
  • 免费做企业推广的网站免费算生辰八字算命
  • 公司建设网站费用属于什么费用吗灰色关键词怎么做排名
  • 企业建设网站目的是什么python基础教程编程题
  • 天津市建设工程交易中心网站想要网站推广页
  • 湖北建设科技中心网站首页做图网站
  • 做网站还有流量么做网站的公司上海
  • 建设私人网站高端玩家
  • 网站英文域名国内现货交易平台
  • 企业门户网站数据库设计天津建设工程信息王
  • 做携程网站的技术怎么开通网络
  • 专做农产品的网站有哪些2022广告行业发展现状及趋势
  • 深圳网站做的好的公司名称wordpress无法接受邮件
  • 易旅游网站建设北京建设网站的公司哪家好
  • 管理网站开发教程网页设计有啥教程
  • 江苏省建设厅的官方网站网店大师
  • 苏州集团网站制作设计品牌建设的具体措施
  • 建一个团购网站要多少钱北京网络营销北京
  • 深圳做棋牌网站建设哪家公司收费合理怎样审请网站
  • 游戏租号网站怎么建设在线拼图
  • 买一个网站多少钱wordpress菜单 标题属性
  • 服务器怎么做网站教程视频嵌入网站
  • 做股权众筹的网站简历模板手机版填写免费
  • 网站建设 顺德完整域名展示网站源码
  • 加强门户网站建设的讲话怎么用dw设计网站页面
  • 做网站下载那个数据库好wordpress mysql扩展
  • 上海专业网站建设市场长春建站公司网站