見出し画像

Go初心者が「RESTful API開発チュートリアル」をやってみた!<API実行編>

こんにちは!
株式会社リヴェル 採用担当兼エンジニアのチノです😊

今日も寒いですね!寒がりの私にとっては、極寒レベルです🥶(笑)
最近スーパーに行くとひな祭りの曲が流れているのですが、高校の卒業式が3月3日のひな祭りの日だったので、懐かしくなりました🎓
卒業式の日にちなんか覚えてないよ!という方もいらっしゃるかと思いますが、ひな祭りという印象が強いので覚えていました🎎
大学の方が最近なのにいつだったかぱっと思い出せません😂

ふと、去年の今頃何してたんだろ?と思いまして、写真フォルダを見返したら、幼馴染とおしゃれなカフェに行っていました😊💖

渋谷と中目黒のカフェでした🍮☕

当時2人ともプリンにハマっていて、美味しいプリンのために寒い中並んだのを思い出しました!🍮💛
ちなみに、私は沢山食べるし食べることが大好きなので、このご飯の量だと足りません😋😂
この時期、別の友達ともプリンを食べていたので、相当好きだったんですね🍮💖

さて、余談はこのくらいにして、本題に入ってまいります!💨

「GoとGinを使用したRESTful APIの開発」のチュートリアルをやってみた!<API実行編>

です!😊



備忘録(APIについて理解されている方はスキップしてください✨)

まず、APIとは??📝
・APIは「Application Programming Interface」の略
・ソフトウェアアプリケーション同士が通信して情報をやり取りするための仕組み

今回登場する、RESTful APIとは??📝
・RESTは「Representational State Transfer」の略
・分散型ネットワークアーキテクチャの設計原則のことで、クライアントとサーバー間の通信を効率的に行うためのルールやガイドラインを提供

続いて、RESTful APIの特徴です!📝
リソース指向性:リソース(web上のあらゆる情報やデータ)を操作する。
HTTPメソッドの使用:HTTPメソッドを使用してリソースを操作する。
HTTPメソッドの代表例は、【GET(取得)・POST(作成)・PUT(更新)・DELETE(削除)】などです。
状態を持たない通信:各リクエストが独立している。
前のステップでの操作や情報が次のステップに影響を与えないのでシステムの拡張性が向上しパフォーマンスの低下を防ぐ。
統一インターフェース:APIの操作方法やリソースへのアクセス方法が一貫している。
全てのリソースに対して同じHTTPメソッドを使用し、URI(URLとURNを包括)を使ってリソースにアクセスする。
リクエストとレスポンスの形式:一般的にJSONやXMLなどのデータ形式を使用してリクエストとレスポンスをやり取りす。
異なるプログラミング言語やプラットフォームでもAPIを利用することができる。


チュートリアルですが、こちらをやってみました!
Qiitaの方は、英語版のチュートリアルと中身は同じなのですが、解説を全て日本語に翻訳してくれているものです✨

1.APIエンドポイントの設計をする

APIエンドポイントは、APIが提供する機能にアクセスするためのURLやアドレスのことで、特定の操作やデータにアクセスするためのポイントとして機能します!

今回は、駄菓子を販売するストアへのアクセスを提供するAPIを構築します。

/albums
GET:全てのアルバムのリストを取得し、JSONとして返します
POST:JSON形式で送信されたリクエストデータから新しいアルバムを追加します

/albums/:id
GET – ID(:id)によってアルバムを取得し、JSON形式のアルバムデータを返します

2.VSCodeのコマンドプロンプトでフォルダを作成する

①ディレクトリ作成をする
mkdir web-service-dagashi
mkdirがディレクトリを作成してくれるコマンドです。

②ディレクトリ移動
$ cd web-service-dagashi
cdはディレクトリ移動をするコマンドです。

VSCodeでフォルダを開く
フォルダーを開くから選択します!

🔽🔽🔽

go.modファイルを作成
$ go mod init example/web-service-dagashi
⏩「go mod init」の部分が、Goモジュールを初期化するコマンドです。
⏩「web-service-dagashi」がモジュールの名前(プロジェクトやパッケージの名前)です。
⏩「example」は、チュートリアルなので一般的な例示のために使っているだけで、実際のモジュール(ここだとweb-service-dagashi)に対しては適切なドメイン名や組織名を使用するそうです。

3.データを作成する

①「main.go」を作成する
② 構造体albumの宣言を記述する
③ ②の下に、初期データとして使用するalbumスライス(データのコレクション)を記述する

今回は駄菓子なので、Nameには駄菓子の名前・Flavorにはしょっぱいなど味の区分を、Priceは適当な価格で設定しています!🍬🍭
Sweets Plumは大好きなすもも漬けです💖

4.全ての項目を返すハンドラーを作成する

クライアントがGET /albumsとリクエストした時に、JSON形式で全てのアルバムをレスポンス出来る様にします。
① `albums`宣言の下に、アルバムリストを取得するためのコードを記述
② ①の上にmainメソッドを記述

一旦エラーは無視します!

③パッケージをインポートする
インポートして、保存します!(保存は適宜行いましょう!)

赤枠"github~~"にエラーが起きた場合は、コマンドプロンプトで
go get -u github.com/gin-gonic/gin を実行すると解消すると思います!✨
こうなってソースコードの赤線が消えればOKです😊

5.APIを開始する

①「main.go」のあるコマンドラインから、
「$ go run . 」を実行する

②新たにコマンドラインを開き、「$ curl http://localhost:8080/albums」を実行しリクエストを送信する

無事、APIが実行出来ました!✨

長くなってしまったので、続きは次回にいたします🙇‍♀️


最後になりますが、株式会社リヴェルではエンジニア採用を強化しております❤️‍🔥
「モダンな言語や技術を使用する案件に参画し成長したい」
「エンジニアとしての経験は浅いけどキャリアアップを目指したい」
「ゴリゴリ開発の案件に参画したい」
「マネジメントをやってみたい!経験を活かしたい」
「テックリードとして活躍したい」
という想いをお持ちの方、一緒に働きませんか??
気になってくださった方、是非こちらの記事を覗いてみてください😊💖

では、本日の最後までお読みいただきありがとうございました!
また月曜日もお会い出来ると嬉しいです❤️‍🔥
皆様、良い3連休をお過ごしください✨

この記事が参加している募集