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

Go LangでWebAPIを作成するために、GolangでMySQLに接続する

HeidiSQLでSQLを実行する 次に、Go LangでWebAPIを作成するために、まずはDockerでMySQLを構築するで作ったMySQLにデータベースを作成する。HeidiSQLから作成しようとするが、 SQL 0A80E90FC (1044): Access denied for user 'your_username'@'%' to database 'project'uery という権限エラーが出るようになった。 version: '3' services: mysql: image: mysql:latest container_name: project environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: project MYSQL_USER: username MYSQL_PASSWORD: password ports: , "3306:3306" volumes: - ./data:/var/lib/mysql に変更したらできた。ちょっと理由はわからない。 で、projectというデータベースでSQLを実行する。 CREATE TABLE sample ( id INT AUTO_INCREMENT PRIMARY KEY, firstName VARCHAR(255), lastName VARCHAR(255), isActive BOOLEAN DEFAULT TRUE ); これでSampleのテーブルを作成することが出来た。 GoLangでテーブルを作成する 次にGORMをインストールする。 go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite を実行すると、...

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

Go LangでWebAPIを作成するために、まずはDockerでMySQLを構築する

普段フロントエンドをメインとしているので、バックエンドの環境構築に疎い。 今まではFirebaseを使用することが多く、前回はじめてNestJSで本格的にバックエンドの構築をした。 とは言えNestJSはJavascriptである。 Windows11に入れたMySQLとNest.Jsを接続し、テーブルを作成する 難しかったけど、新しいことに挑戦した感じがしなかった。 しかもその時、とにかく早く実装したかったので、MySQLをWindowsにインストールしたうえでテストしていた。 実際の案件ではそんなことありえないので、しっかりDockerで環境を構築し、言語はGo Langを採用することにした。 まずはDockerでMySQLを構築する docker-compose.yaml を作成する version: '3' services: mysql: image: mysql:latest container_name: my-mysql-container environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: your_database_name MYSQL_USER: your_username MYSQL_PASSWORD: your_password ports: , "3306:3306" volumes: - ./data:/var/lib/mysql で、docker-compose up -dを実行する。 error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Dproject-backend%22%3Atrue%7D%7D": open //./pipe/docker_engine: The system cannot find the file specified. というエラーが出た。 よく分からないけど、Dockerが起動していないことが原因のようなので、Start-Service dockerコマンドを入力しろとGPTに教えてもらったが、 'Start-Service' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 というエラーが出た。...

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

VS Codeの拡張機能「Ascii Tree Generator」を使用しツリーファイル構造をサクッと作成する

VS Code の拡張機能「Ascii Tree Generator」 インストール ディレクトリ構造など面倒なツリーを#タグを使って簡単に書けるようにしてれる拡張機能。 Githubのドキュメントに詳しい説明がある。 使用方法 # public # dist ## index.d.ts ## index.js # src ## index.ts ↑ のように作成し選択、Ctrl+Shift+Pでコマンドを開き、Pre-Formatted Tree Stringを選択する。 . ├── public ├── dist │ ├── index.d.ts │ └── index.js └── src └── index.ts そうすると上記のように展開される。

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