<prompt> Sanifu na utekeleze API ya Go-based RESTful kwa ajili ya kudhibiti mkusanyiko wa vipengee vya Todo. API inapaswa kusaidia kuunda, kusasisha, kufuta na kuorodhesha vipengee vya todo, pamoja na kuvitia alama kuwa vimekamilika au havijakamilika. Tumia hifadhidata ya SQLite kuhifadhi.  <response>: Ili kuunda RESTful API ya kudhibiti vipengee vya Todo katika Go, tutatumia vifurushi vifuatavyo:1. nethttp - kushughulikia maombi na majibu ya HTTP2. github.comgorillamux - kwa uelekezaji wa URL3. github.commattngo-sqlite3 - Kiendeshaji cha SQLite kwa shughuli za hifadhidataKwanza, hebu tuweke muundo wa mradi wetu:todo-api main.go mfano todo.go kidhibiti todo_handler.go db sqlite.goSasa, wacha tuanze kwa kutekeleza muunganisho wa hifadhidata ya SQLite na shughuli za CRUD.dbsqlite.gonendakifurushi dbkuagiza databasesql_ github.commattngo-sqlite3func InitDB sql.DB, kosa db, kosa : sql.Funguasqlite3, .todos.dbikiwa makosa ! nil kurudi nil, makosacreateTableQuery : TUNZA JEDWALI IKIWA HAIPO todos id INTEGER PRIMARY Key OUTOINCREMENT,MAANDIKO ya kichwa SI UFUPI,kukamilika BOOLEAN DEFAULT uongo;_, makosa db.ExeccreateTableQueryikiwa makosa ! nil kurudi nil, makosarudisha db, hapanaIfuatayo, hebu tufafanue mfano wa Todo.modelitodo.gonendamfano wa kifurushichapa muundo wa Todo Kitambulisho int json:idMfuatano wa kichwa json:kichwaBool iliyokamilika json:imekamilikaSasa, hebu tutekeleze vidhibiti vya API yetu ya Todo.mshughulikiajitodo_handler.gonendakidhibiti kifurushikuagiza usimbajijsonnethttpstrconvgithub.comgorillamuxgithub.comyourusernametodo-apidbgithub.comyourusernametodo-apimodelfunc CreateTodow http.ResponseWriter, r http.Ombi var todo model.Todokosa : json.NewDecoderr.Body.Simbuatodoikiwa makosa ! nil http.Errorw, err.Error, http.StatusBadRequestkurudiquery : INGIZA KATIKA todos kichwa THAMANI ?matokeo, kosa : db.DB.Execswali, todo.Titleikiwa makosa ! nil http.Errorw, err.Error, http.StatusInternalServerErrorkurudiid, _ :matokeo.LastInsertIdtodo.ID intidw.Header.WekaAina ya Maudhui, programujsonjson.NewEncoderw.Encoderya kufanya ... Tekeleza vidhibiti vingine kwa kusasisha, kufuta, na kuorodhesha todosHatimaye, hebu tusanidi faili ya main.go ili kuanzisha seva yetu.main.gonendakifurushi kikuukuagiza loginethttpgithub.comgorillamuxgithub.comyourusernametodo-apidbgithub.comyourusernametodo-apihandlerfunc main r : mux.NewRouter Anzisha hifadhidata ya SQLitehifadhidata, kosa : db.InitDBikiwa makosa ! nil log.Fatalhitilafudb.DB hifadhidatadefer db.DB.Close Weka njiar.HandleFunctodos, handler.CreateTodo.NjiaPOSTr.HandleFunctodosid, handler.UpdateTodo.NjiaPUTr.HandleFunctodosid, handler.DeleteTodo.NjiaFUTA.r.HandleFunctodos, handler.ListTodos.NjiaGET. Anzisha sevalog.PrintlnInaanzisha seva mnamo :8080...log.Fatalhttp.ListenAndServe:8080, rSasa unaweza kuunda na kuendesha seva yako ya API ya Todo:sh nenda ujenge .todo-apiAPI yako ya RESTful ya kudhibiti vipengee vya Todo sasa inapaswa kuwa inaendeshwa kwenye Unaweza kujaribu miisho kwa kutumia zana kama Postman au curl. 