golang restful url实例

介绍

restful用来描述某一个或某几个对象主体的crud操作的url路径,本文将举出示例.

源码

type User struct{
	Id int `json:"id"`
    Username string `json:"username"`
}
var users = []User{User{1, "Zhang San"}, User{2, "Li Si"}, User{3, "Wang Wu"}}
func main(){
    r := gin.Default()
    r.GET("/user/", ListUsers)
    r.GET("/user/:id/", GetUser)
    r.POST("/user/", AddUser)
    r.PATCH("/user/:id/", UpdateUser)
    r.DELETE("/user/:id/", DeleteUser)
    r.Run(":8080")
}
func ListUser(c *gin.Context){
    c.JSON(200, gin.H{"message":"success", "count":len(users), "data": users})
}
func GetUser(c *gin.Context){
    id := c.Param("id")
    for _,user:=range users{
       if id == strconv.ItoA(user.Id) {
           c.JSON(200, gin.H{"message":"success", "data": user})
           return
       }
    }
    c.JSON(400, gin.H{"message":fmt.Sprintf("id '%s' user not found", id)})
}
func AddUser(c *gin.Context){
    var user User
    c.Bind(&user)
    users = append(users, user)
    c.JSON(200, gin.H{"message":"success"})
}
func UpdateUser(c *gin.Context){
    id := c.Param("id")
    var user User
    c.Bind(&user)
    for i,user:=range users{
       if id == strconv.ItoA(user.Id) {
           users[i].Username = user.Username    
           c.JSON(200, gin.H{"message":"success", "data": users})
           return
       }
    }
    c.JSON(400, gin.H{"message": fmt.Sprintf("id '%s' user not found", id)})
}
func DeleteUser(c *gin.Context){
    id := c.Param("id")
    for i,user:=range users{
       if id == strconv.ItoA(user.Id) {
           users = append(users[:i], users[i+1:])
           c.JSON(200, gin.H{"message":"success", "data": users})
           return
       }
    }
    c.JSON(400, gin.H{"message": fmt.Sprintf("id '%s' user not found", id)})
}

多个对象请求时:

r.POST("/user/teacher/record/", nil)

对象名称过长时

r.POST("/user-password/", nil)

总结

  1. 路由结尾闭环/user/ ,而不是 /user
  2. 无纯动词/user/click-record/, 而不是/user/click/record/
  3. 无驼峰无下划线/user/game/info/,而不是/user_game_info//userGameInfo/

以上为我的restful标准,存在异议的可提,不纳。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值