Go Langで新規登録と退会のWebAPIを作成したので、やったことをまとめてみる。

いたるまで Go Lang で WebAPI を作成するために、まずは Docker で MySQL を構築する Go Lang で WebAPI を作成するために、Golang で MySQL に接続する Go Lang で WebAPI を作成するために、Golang でサーバーを立ち上げる Go Lang で WebAPI を作成するために、Golang でエンドポイントにアクセスし DB からデータを取得する Go Lang で WebAPI を作成するために、Golang で DB のデータを取得する main ファイルをそれぞれの責務に分割する ディレクトリ構成 . ├── db ├── db.go ├── handlers │ ├── auth │ │ ├── delete_user_handler.go │ │ └── create_user_handler.go │ └── handlers.go ├── models │ └── user_model.go └── main....

投稿日 · 2023-12-14 · 更新日 · 2024-06-07 · 4 分 · nove-b

情報収集のためにRSSを作成した。

作ったもの 📰💬✨|購読している記事とか、好きなサイトとか。 気になるURLをosmosfeed.yamlにまとめて、購読するRSS Feed。 情報過多で、時間がない中、常々欲しいと思っていたが、しっくりくるアプリがなく、自分で作ることにした。 書いているブログが個人を象徴するポートフォリオになるように、購読している記事も個人を象徴する気がする。 購読している記事をプロフィールに掲載するサービスもおもしろいかもしれない。 さて、作り方だけれど、 osmosfeed osmosfeedを使えば簡単にできた。 仕組みとしてはGithub Actionで購読しているサイトの新着記事を自動で取得してくれるというもの。 作り方 Readmeに書いてある通りに進めていけば基本的に問題ない。 Github Actionでエラーが出たけど、こちらのリポジトリが参照しているGithub Actionのコアのリポジトリを参照にしたところ解決した。 build error aftermodified osmosfeed.yaml when Deploy to Github pages: Permission to <xxxx/xxx>.git denied to github-actions[bot] Closeしていたけど、一応解決方法をコメントしておいた。

投稿日 · 2023-12-14 · 更新日 · 2024-06-07 · 1 分 · nove-b

Go LangでWebAPIを作成するために、GolangでDBのデータを取得するmainファイルをそれぞれの責務に分割する

Go LangでWebAPIを作成するために、GolangでエンドポイントにアクセスしDBからデータを取得するでデータ取得の処理は確認できた。 リファクタリング 次に現状、main.goにすべての記述をしていたが、それぞれ簡単に責務ごとにフォルダを分けることにした。 分け方は、下記の通り。 db フォルダ: データベース関連の処理: db フォルダは主にデータベースとのやり取りに関するコードを含みます。 データベースの初期化: db.go ファイルではデータベースの初期化と接続に関するコードがあります。 モデルの定義: データベースのテーブルに対応するモデルを定義します(例: db.Model)。 // db/db.go package db import ( "fmt" "os" "gorm.io/driver/mysql" "gorm.io/gorm" ) var DB *gorm.DB type Model struct { gorm.Model } func InitDB() { dsn := os.Getenv("DB_CONNECTION_STRING") if dsn == "" { fmt.Println("DB_CONNECTION_STRING 環境変数が設定されていません") os.Exit(1) } var err error DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { fmt.Printf("データベースへの接続に失敗しました: %v\n", err) os.Exit(1) } fmt.Println("データベースに接続しました") } handlers フォルダ: HTTP ハンドラとリクエスト処理: handlers フォルダは主に HTTP リクエストを処理し、それに対するレスポンスを生成するコードを含みます。 ルーティング: リクエストのルーティングやエンドポイントの定義が handlers....

投稿日 · 2023-12-05 · 更新日 · 2024-06-07 · 2 分 · nove-b

Go LangでWebAPIを作成するために、GolangでエンドポイントにアクセスしDBからデータを取得する

Go LangでWebAPIを作成するために、GolangでMySQLに接続する Go LangでWebAPIを作成するために、Golangでサーバーを立ち上げる でDBと接続することはできたし、サーバーを立ち上げることに成功した。 User情報を取得するAPIを作成する 次は、特定のエンドポイントにアクセスした際に、DBからデータを取得する。 具体的にはhttp://localhost:8081/usrsにアクセスした際にusersテーブルのデータを取得できるようにしたい。 エンドポイントを作成する まずはhttp://localhost:8081/usrsのエンドポイントを作成する。 func sample(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Welcome to the sample!") fmt.Println("Endpoint Hit: sample") } func handleRequests() { http.HandleFunc("/sample", sample) log.Fatal(http.ListenAndServe(":8081", nil)) } handleRequestsをmain関数の中で実行すればhttp://localhost:8081/usrsにアクセスした際に Welcome to the sample と表示されるようになった。 ちになみに、 fmt.Fprintf(w, "Welcome to the sample!") 上記のwが謎で調べてみたところ、 w を使用して Write メソッドを呼び出すことで、HTTPレスポンスの本文をクライアントに送信することができます。fmt.Fprintf(w, “Welcome to the sample!”) は、fmt.Fprintf 関数を使用してフォーマットされた文字列を w.Write を介してクライアントに送信しています。 とのことだった。 いまいち理解しかねるけれど、なんとなく必要なことは分かった。 DBのデータをフェッチする 次にhttp://localhost:8081/usrsにアクセスした際にDBの値を返すようにしてみる。 まずはDBに接続する関数を作成する。 これは前回も作成した。 func dbInit() *gorm.DB { dsn := "root:password@tcp(127....

投稿日 · 2023-12-04 · 更新日 · 2024-06-07 · 2 分 · nove-b

Go LangでWebAPIを作成するために、Golangでサーバーを立ち上げる

net/httpでサーバーを立ち上げる DBと接続することはできたので、次はエンドポイント作成のためサーバーを立ち上げる。 サーバーを構築する組み込みのパッケージが用意されているので、そちらを使用する。 net/http インストールの仕方がないとか思っていたけど、組み込み、つまり標準装備なので特にインストールは必要なく、importすれば使用可能だった。 で、 package main import ( "fmt" "log" "net/http" ) func homePage(w http.ResponseWriter, r *http.Request){ fmt.Fprintf(w, "Welcome to the HomePage!") fmt.Println("Endpoint Hit: homePage") } func handleRequests() { http.HandleFunc("/", homePage) log.Fatal(http.ListenAndServe(":8081", nil)) } func main() { handleRequests() } 上記をmain.goに記載したうえで、$ go run src/main.goを実行する。 http://localhost:8081/ に訪れると、 Welcome to the HomePage! が表示されている。これでサーバー立ち上げの確認ができた。

投稿日 · 2023-12-03 · 更新日 · 2024-06-07 · 1 分 · nove-b