<prompt> Tengeneza API ya Golang REST inayoingiliana na hifadhidata ya MySQL ili kutekeleza shughuli za CRUD kwenye huluki ya Bidhaa yenye sehemu: Kitambulisho, Jina, Maelezo na Bei. Jumuisha ushughulikiaji sahihi wa makosa na uthibitishaji wa pembejeo za mtumiaji.  <response>: Ili kuunda API ya Golang REST inayoingiliana na hifadhidata ya MySQL kutekeleza shughuli za CRUD kwenye huluki ya Bidhaa, utahitaji kufuata hatua hizi:1. Sanidi mazingira ya Go na unda mradi mpya2. Sakinisha vifurushi vinavyohitajika kwa kushughulikia maombi ya HTTP na kuunganisha kwenye MySQL3. Unda muundo wa Bidhaa ili kuwakilisha huluki ya Bidhaa4. Unganisha kwenye hifadhidata ya MySQL5. Tekeleza utendakazi kwa kila operesheni ya CRUD Unda, Soma, Sasisha, Futa6. Weka njia kwa kila sehemu ya mwisho na ushughulikie uthibitishaji wa ingizo la mtumiajiHapa kuna mfano wa utekelezaji wa API hii ya REST:nendakifurushi kikuukuagiza usimbajijsonfmtgithub.comgorillamux_ github.comgo-sql-drivermysqlnethttpstrconvaina ya muundo wa bidhaa Kitambulisho int json:idMfuatano wa jina json:jinaMfuatano wa maelezo json:maelezoBei float64 json:beivar bidhaa Bidhaafunc main kipanga njia : mux.NewRouterrouter.HandleFuncbidhaa, getProducts.NjiaGET.router.HandleFuncproductid, getProduct.NjiaGET.router.HandleFuncbidhaa, createProduct.NjiaPOSTrouter.HandleFuncproductid, updateProduct.-MbinuPUTrouter.HandleFuncproductid, deleteProduct.NjiaFUTA.http.ListenAndServe:8000, kipanga njiafunc getProductsw http.ResponseWriter, r http.Ombi w.Header.WekaAina ya Maudhui, programujsonjson.NewEncoderw.Encoderbidhaafunc getProductw http.ResponseWriter, r http.Ombi w.Header.WekaAina ya Maudhui, programujsonvigezo : mux.Varsrid, err : strconv.Atoiparamsidikiwa makosa ! nil w.WriteHeaderhttp.StatusBadRequestkurudikwa _, bidhaa : bidhaa mbalimbali if product.ID id json.NewEncoderw.Encoderbidhaakurudiw.WriteHeaderhttp.HaliHaijapatikanafunc createProductw http.ResponseWriter, r http.Request w.Header.WekaAina ya Maudhui, programujsonvar newBidhaa ya Bidhaakosa : json.NewDecoderr.Body.SimbuanewBidhaaikiwa makosa ! nil w.WriteHeaderhttp.StatusBadRequestkurudinewProduct.ID lenibidhaa 1bidhaa ongeza bidhaa, bidhaa mpyajson.NewEncoderw.SimbuaBidhaa mpyafunc updateProductw http.ResponseWriter, r http.Ombi w.Header.WekaAina ya Maudhui, programujsonvigezo : mux.Varsrid, err : strconv.Atoiparamsidikiwa makosa ! nil w.WriteHeaderhttp.StatusBadRequestkurudivar updatedBidhaa ya Bidhaaerr json.NewDecoderr.Body.SimbuaupdatedProductikiwa makosa ! nil w.WriteHeaderhttp.StatusBadRequestkurudikwa i, bidhaa : bidhaa mbalimbali if product.ID id productsi updatedProductjson.NewEncoderw.EncodeupdatedBidhaakurudiw.WriteHeaderhttp.HaliHaijapatikanafunc deleteProductw http.ResponseWriter, r http.Ombi w.Header.WekaAina ya Maudhui, programujsonparams : mux.Varsrid, err : strconv.Atoiparamsidikiwa makosa ! nil w.WriteHeaderhttp.StatusBadRequestkurudikwa i, bidhaa : bidhaa mbalimbali if product.ID id bidhaa nyongezabidhaa:i, bidhaai1:...mapumzikojson.NewEncoderw.EncoderbidhaaMfano huu hutumia kifurushi cha Gorilla Mux kuelekeza na kiendeshi cha Go MySQL ili kuunganisha kwenye hifadhidata ya MySQL. Utahitaji kubadilisha kipande cha bidhaa cha kumbukumbu na hoja halisi za hifadhidata kwa kutumia kifurushi cha databasesql.Kumbuka kuongeza ushughulikiaji sahihi wa makosa, uthibitishaji wa ingizo, na misimbo ya majibu kwa kila ncha. 