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")
}
روش سوم در ادامه اضافه خواهد شد.