1. 程式人生 > 其它 >gin中multipart/urlencoded繫結

gin中multipart/urlencoded繫結

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

type LoginForm struct {
	// form:"user" 表示前端提交form表單時User對應的key的名稱為:user
	// binding: "required" required表示前端必須傳入該鍵才可以
	User string `form:"user" binding:"required"`
	Password string `form:"password" binding:"required"`
}

func main() {
	router := gin.Default()
	router.POST("/login", func(c *gin.Context) {
		var form LoginForm
		// 你可以使用顯示繫結宣告繫結 multipart form
		//if err := c.ShouldBindWith(&form, binding.Form); err == nil {
		// 先校驗使用者傳參是否符合LoginForm的校驗約束
		// 或者簡單的使用ShouldBind方法自動繫結,在這種情況下將自動選擇合適的繫結
		if err := c.ShouldBind(&form); err == nil {
			// 在校驗傳入的使用者名稱密碼是否正確
			if form.User == "user" && form.Password == "password" {
				c.JSON(http.StatusOK, gin.H{"status": "you are logged int"})
			} else {
				c.JSON(http.StatusUnauthorized, gin.H{"status": "Unauthorized"})
			}
		} else {
			fmt.Println(err)
			c.JSON(http.StatusBadRequest, gin.H{"key": "key error"})
		}
	})
	router.Run()
}