golang restful urlインスタンス
16183 ワード
紹介する
restfulは、1つまたは複数のオブジェクト本体のcrud動作を記述するurlパスである、ここでは例を挙げる.
ソースコード
複数のオブジェクトが要求された場合:
オブジェクト名が長すぎる場合
まとめは、 無純動詞 ではない.アルパカなし下線なし ではない.
に付随
以上は私のrestful標準で、異議の申し立てがあって、受け入れません.
restfulは、1つまたは複数のオブジェクト本体の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)
まとめ
/user/
ではなく、終端閉ループ/user
をルーティングする./user/click-record/
、/user/click/record/
/user/game/info/
、/user_game_info/
または/userGameInfo/
に付随
以上は私のrestful標準で、異議の申し立てがあって、受け入れません.