متد های پست در Echo

1/13/2022 Go(golang)
2075

echo  یکی از کتابخانه هایی است که در برنامه نویسی GO (golang)برای مدیریت روت ها routs  ,دسترسی به HTTP  به کار میرود.

این مطلب در راستای یادگیری زبان برنامه نویسی GO است

برای ارسال اطلاعا ت به سرور از متد POST برای ذخیره کامل یه رکور استفاده میشود

در این پست یه روش برای پیاده سازی POST  استفاده میکنیم در اولین متد که بیشترین سرعت در این متد ها را دارد میتوانیم استاده از پکیج ioutils است 

در این سه روشT پکیج echo را با استفاده از دستور زیر به پروژه اضافه میکنیم 

go get github.com/labstack/echo/v4

 در روش اول ما قرار است که نام یک شی از نوع carmodel  که در پوشه model  قرار داده شده را ایجاد کنیم.

func main() {
	fmt.Print("start webservice")
	e := echo.New()
	e.GET("/", hello)
	e.GET("/carmodels/:data", GetCarModels)

	e.POST("/carmodel", addCarModel)
	e.POST("/companyname", addcompanyName)

	e.Logger.Fatal(e.Start(":1323"))
}

در متد main  روتها را تعریف میکنیم 

اولین متد POST  به این صورت پیاده میکنیم 

func addCarModel(c echo.Context) error {
	cm := models.CarModel{}

	defer c.Request().Body.Close()

	b, err := ioutil.ReadAll(c.Request().Body)
	if err != nil {
		log.Printf("faild reading the request body %s", err)
		return c.String(http.StatusInternalServerError, "")
	}
	err = json.Unmarshal(b, &cm)
	if err != nil {
		log.Printf("faild unmarshaling in add car model %s", err)
		return c.String(http.StatusInternalServerError, "")
	}
	log.Printf("this is my car model: %#v", cm)
	return c.String(http.StatusOK, "we get my cm")
}

 

در روش دوم از ioutil استفاده نمیکنیم و به جای آن از jsonDecoder استفاده میکنیم 

 

func addcompanyName(c echo.Context) error {
	cn := models.CompanyName{}

	defer c.Request().Body.Close()

	err := json.NewDecoder(c.Request().Body).Decode(&cn)
	if err != nil {
		log.Print("faild processing addCompanyName reques %s", err)
		return echo.NewHTTPError(http.StatusInternalServerError, "")
	}
	log.Printf("this is my car model: %#v", cn)
	return c.String(http.StatusOK, "we get my cm")
}

روش سوم در ادامه اضافه خواهد شد.