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

Go Lang でモジュールを作成し、それをMainパッケージで使用する

呼び出したいモジュールを作成する まずは利用するgreetingsモジュールを作成する。 go mod init example.com/greetings 上記を実行する。 go: creating new go.mod: module example.com/greetings というメッセ―ジとともに、go.modが作成される。 ちなみにコマンドに記入した`example.com‘はドメイン名ではGo ツールによってモジュールをダウンロードできるパスになるっぽいらしいけれど、よくわからない。 次にgreetings.goというファイルを作成し、 package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message } 上記のように記入する。 これでパッケージは作成できた。 mainのパッケージを作成する 次にこれを呼び出していく。 先ほど作成したgreetingsモジュールが格納されているフォルダと同階層にhelloフォルダを作成する <home>/ |-- greetings/ |-- hello/ 今までの通りモジュールを作成する。 go mod init hello ドメインは必須じゃないということだったので、省略してみたが、無事に作成することができた。...

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

WindowsにGoをインストールしてHello Worldしてみる

インストール Go Download and installのページに行き、環境に適したものをインストールする。 インストールするとシステムが立ち上げるので、手順に沿って進めていく。 Finish後、Goがインストールされていることを確認する。 コマンドを開き、go versionを叩くとgo version go1.21.1 windows/amd64と表示された。 これでインストールされていることを確認できた。 Hello World 次にHelloWordを表示させる。 まずは任意の場所に適当なフォルダを作成する。 mkdir HelloWorldGo cd HelloWorldGo モジュールを作成する 次に、 go mod init example/hello 上記コマンドでモジュールの作成を行うのだが、 'go' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 というエラーが出た。 Pathを調べてみるとしっかりと通っている。 ということで再起動をする。 再起動で、 go mod init example/hello go: creating new go.mod: module example/hello 無事に叩けるようになった。 上記コマンドで作成されたのは、go.modというファイルで、 module example/hello go 1.21.1 という記載がある。 調べてみるとこれは、依存関係のバージョン管理をするものらしい。 つまり、スクリプトを記述しないJavaScriptのpackage.jsonみたいなものらしい。 疑問点が解消されたので、次に行く。 Mainパッケージの作成 hello.goファイルを作成し、 package main import "fmt" func main() { fmt.Println("Hello, World!") } をと記述する。 go run ....

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