router.goにはルーティングに関する記述だけを行いたいです。
その場合、以下のように記述することになりました。
router
1import ( 2 "net/http" 3 "server/interface/controller" 4) 5 6func InitRouting() { 7 http.HandleFunc("/task", controller.Handler2) 8 http.HandleFunc("/", controller.Handler) 9}
controller.goではpackage:applicationからのデータを取得しJSON形式で渡すようなAPIのプログラムを書きたいです。
controller
1import ( 2 "encoding/json" 3 "fmt" 4 "log" 5 "net/http" 6 "server/application" 7) 8 9type TaskController struct { 10 Ta application.TaskApplication 11} 12 13// エラーが出力される 14func (tc *TaskController) Handler2(w http.ResponseWriter, r *http.Request) error { 15 fmt.Fprint(w, "Hello World from TaskGo.\n") 16 17 taskList := tc.Ta.All() 18 buf, err := json.Marshal(taskList) 19 20 if err != nil { 21 log.Fatal(err) 22 } 23 24 w.Header().Set("Content-Type", "application/json") 25 // w.Write(buf) 26 27 return w.Write(buf) 28} 29 30// 動く 31func Handler(w http.ResponseWriter, r *http.Request) { 32 fmt.Fprint(w, "Hello World from Go.\n") 33}
このような場合、controller.goにはどのような記述をすればいいでしょうか?
いろいろ試してみましたが、以下のようなエラーが出ました。
error
1undefined: controller.Handler2
や
error
1too many arguments to return 2have (int, error) 3want (error)
methodの使い方の理解が薄いからかと思いますが、
分かる方いましたらご教授いただけると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 02:34
2020/03/04 14:30