Golang 转生到web世界 - gin路由

Golang

Gin路由

Gin本身是支援restful的,所以可以看一下github所写的范例,使用route.就可以直接使用各种HTTP的方式罗!

func main() {
	// Creates a gin router with default middleware:
	// logger and recovery (crash-free) middleware
	router := gin.Default()

	router.GET("/someGet", getting)
	router.POST("/somePost", posting)
	router.PUT("/somePut", putting)
	router.DELETE("/someDelete", deleting)
	router.PATCH("/somePatch", patching)
	router.HEAD("/someHead", head)
	router.OPTIONS("/someOptions", options)

	// By default it serves on :8080 unless a
	// PORT environment variable was defined.
	// router.Run()
	// router.Run(":8000") 
}

简单说明一下restful,restful是一种规范或者风格,并非一种技术或者程序语言,所以严格来说不使用不遵守也不会怎样,但为什麽需要他就稍微简短的说明。

常见的Http Method有以下

  • GET:取得资料。
  • POST:新增一笔资料。
  • PUT:更新一笔资料。
  • DELETE:资料删除。

RESTful:
在传统API上,我们可能会看到这样的function name 或者API name

新增使用者: /postUser
查所有帐号: /getUsers
查询使用者: /getUser
修改使用者: /updateUser
删除使用者: /delUser

那如果对方是使用RESTful的话

新增使用者:POST /user
查所有帐号:GET /users
查询使用者:GET /user/1
修改使用者:PUT /user/1
删除使用者:DELETE /user/1

从这里可以看出,RESTful希望操作资料的行为以http method作为依据,所以双方都可以从http method就可以知道这资料的操作行为是什麽了,以减少传统在命名方式上,需要心有灵犀一点通的默契。

所以这时候我们回推一下,一开始的范例,如果是RESTful风格的话,理论上你的route每一个地都只会对资料做某件事情唷!例如GET就不应该会更新资料才是。

当然RESTful有几个基本的定义啦!这部分就给有兴趣的朋友自行喂狗了。

那继续来看一下gin的route

package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {

	router := gin.Default()

	router.GET("/user/:name", func(c *gin.Context) {
		name := c.Param("name")
		c.String(http.StatusOK, "Hello %s", name)
	})
	router.Run(":8000")
}

这时候输入看看http://localhost:8000/user/Tom
从程序码可以猜出:name就是对应c.Param("name")

当然我们也可以改成

	router.GET("/user/:name/:age", func(c *gin.Context) {
		name := c.Param("name")
		age := c.Param("age")
		c.String(http.StatusOK, "Hello %s", name)
		c.String(http.StatusOK, "age %s", age)
	})

参考资料
https://github.com/gin-gonic/gin


<<:  Day 11 CSS <三大特性>

>>:  堆叠 - 递回 - 费氏数列 - DAY 7

Day 03. 以 Zabbix 架构为主轴出发

今天要跟大家介绍 Zabbix 架构 Zabbix 基本资讯 官网 https://www.zabb...

Day 18 - 研习计画之工具评估与协作开发

开发框架 在昨日有提到负责後端的研习生的第一个功课是确定开发的框架,而在评估了一个月之後的考量对象包...

Android Studio初学笔记-Day27-ViewPager

ViewPager ViewPager是个让使用者能左右切换view的功能,而ViewPager是直...

[DAY10]制作容器(九)

昨天之後又做了一些尝试: 用php7.4-apache做一个新的容器,然後用docker-php-e...