<prompt> Tengeneza seva ya wavuti ya Golang inayotoa faili tuli kutoka kwa saraka fulani na kutoa vidokezo RESTful vya API ili kuunda, kusoma, kusasisha na kufuta rekodi katika hifadhidata ya PostgreSQL. Tumia maktaba ya Gorilla Mux kuelekeza na sqlx kwa kuingiliana na hifadhidata.  <response>: Ili kutengeneza seva ya wavuti ya Golang inayotoa faili tuli na kutoa miisho ya API RESTful kwa shughuli za CRUD kwenye hifadhidata ya PostgreSQL, fuata hatua hizi:1. Weka vifurushi vinavyohitajikaKwanza, sakinisha Gorilla Mux na sqlx ukitumia go get:bashinenda upate -u github.comgorillamuxnenda upate -u github.comjmoironsqlx2. Ingiza vifurushi muhimuKatika faili yako ya main.go, leta vifurushi vifuatavyo:nendakifurushi kikuukuagiza databasesqlusimbajijsonfmtloginethttpgithub.comgorillamux_ github.comlibpqgithub.comjmoironsqlx3. Sanidi muunganisho wa PostgreSQLBadilisha , , na kitambulisho chako halisi cha PostgreSQL.nendaconst mwenyeji mwenyeji wa ndanibandari 5432mtumiaji nenosiri dbname func dbConnect sql.DB psqlInfo : fmt.Sprintfhosts portd users passwords dbnames sslmodelemaza, mwenyeji, bandari, mtumiaji, nenosiri, dbnamedb, makosa : sql.Funguapostgres, psqlInfoikiwa makosa ! nil hofu makosamakosa db.Pingikiwa makosa ! nil hofu makosakurudi db4. Fafanua mfano wa dataUnda muundo wa kuwakilisha rekodi kwenye jedwali lako la hifadhidata. Kwa mfano, ikiwa una meza inayoitwa watumiaji:nendachapa muundo wa mtumiaji Kitambulisho int json:idMfuatano wa FirstName json:first_nameMfuatano wa Jina la Mwisho json:jina_la_mwishoMfuatano wa barua pepe json:barua pepe5. Tekeleza kazi za CRUDHapa kuna mifano ya kuunda, kusoma, kusasisha, na kufuta vitendaji kwa kutumia sqlx:nendafunc createUserw http.ResponseWriter, r http.Ombi var mtumiaji Mtumiajijson.NewDecoderr.Body.Simbuamtumiajidb : dbConnect_, err : db.ExecINGIZA watumiaji jina_la_kwanza, jina_la_mwisho, barua pepe VALUES 1, 2, 3, user.FirstName, user.LastName, user.Emailikiwa makosa ! nil log.Fatalhitilafuw.WriteHeaderhttp.HaliImeundwajson.NewEncoderw.Encodermtumiajifunc getUsersw http.ResponseWriter, r http.Ombi db : dbConnectsafu mlalo, kosa : db.QueryxCHAGUA KUTOKA kwa watumiajiikiwa makosa ! nil log.Fatalhitilafuvar watumiaji Mtumiajikwa safu.Next var mtumiaji Mtumiajimakosa safu.StructScanuserikiwa makosa ! nil log.Fatalhitilafuwatumiaji ongeza watumiaji, mtumiajiw.Header.WekaAina ya Maudhui, programujsonjson.NewEncoderw.Encoderwatumiajifunc updateMtumiajiw http.ResponseWriter, r http.Ombi params : mux.Varsrid : paramsidvar mtumiaji Mtumiajijson.NewDecoderr.Body.Simbuamtumiajidb : dbConnect_, err : db.ExecUPDATE watumiaji WEKA first_name1, last_name2, email3 WHERE id4, user.FirstName, user.LastName, user.Email, idikiwa makosa ! nil log.Fatalhitilafuw.AndikaKichwahttp.StatusOKjson.NewEncoderw.Encodermtumiajifunc deleteUserw http.ResponseWriter, r http.Ombi params : mux.Varsrid : paramsiddb : dbConnect_, err : db.ExecFUTA KUTOKA KWA watumiaji WAPI id1, idikiwa makosa ! nil log.Fatalhitilafuw.WriteHeaderhttp.StatusNoContent6. Weka router na utumie faili za tulinendafunc main kipanga njia : mux.NewRouter Mwisho wa APIrouter.HandleFuncapiusers, createUser.NjiaPOSTrouter.HandleFuncapiusers, getUsers.NjiaGET.router.HandleFuncapiusersid, updateUser.NjiaPUT.router.HandleFuncapiusersid, deleteUser.NjiaFUTA. Kutumikia faili tulifs : http.FileServerhttp.Dir.staticrouter.PathPrefix.Kidhibitifshttp.ListenAndServe:8080, kipanga njiaSasa una seva ya wavuti ya Golang inayotoa faili tuli kutoka kwa saraka ya .tuli na hutoa miisho ya API RESTful kwa shughuli za CRUD kwenye hifadhidata ya PostgreSQL kwa kutumia Gorilla Mux na sqlx. 