Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

golangで楽々API作成

More than 1 year has passed since last update.

はじめに

2019年に最も注目された言語といえば…
そうだね、golangだね!(私の中では)

ってことで今更感はあるが、golang触ってみました!

やったこと

  • golangの勉強がてら、TODOアプリを作ってみた
  • gin, gormを使ってRESTfulなWeb APIを作成

RESTful APIを作成するにあたり

  • CRUDを意識して!
  • バージョン管理に対応した仕様で!

以上を踏まえてデザインした。

CRUD HTTPメソッド エンドポイント
Create(新規タスクの登録) POST ~/api/v1/tasks
Read(全タスクの参照)   GET ~/api/v1/tasks
Read(一部タスクの参照) GET ~/api/v1/tasks/:id
Update(一部タスクの更新) PUT ~/api/v1/tasks/:id
Delete(一部タスクの削除) DELETE ~/api/v1/tasks/:id

構成考えてみた

Gin と GORM で作るオレオレ構成 APIを参考にさせていただきました。

.
├── controller
│   └── task_controller.go
├── db
│   └── db.go
├── entity
│   └── task.go
├── router
│   └── router.go
└── main.go
パッケージ名 処理内容
controller リクエストに対する処理、レスポンスの決定
db DB接続等の処理を実装
entity エンティティを定義
router ルーティングの設定

エンティティ考えてみた

ToDoリストでは、タスクについて以下のことを管理するようにした。
- タスク名(やらないといけない事)
- 期限
- 重要度(重要か重要でないか)
- 完了状態(完了の有無)

作ってみた

ここに関しては他に多数記事が存在するので割愛
github

所感

ginが使いやすかった件

ただただ使いやすかったです。本当にありがとうございます。

gormの自動マイグレーション機能が便利だった件

gormの自動マイグレーションは、未作成のテーブルやカラムを自動で追加してくれる機能
ちょっとした開発ならSQL書かなくていいし楽!

SQLBoilerという選択肢も?

gormの代わりに、SQLBoilerというライブラリを使う選択肢もあるみたい。
機会があったら触ってみたいですね…

今後

API作成したので、次はクライアント側作ってみます。

seaka829
モバイルアプリ開発(swift/kotolin)が得意 ラズパイ/センサ等で遊ぶのが好き
intec
未来を「ひらく」、技術で「つなぐ」、世界を「変える」、豊かなデジタル社会の一翼を担う会社です。※各記事の内容は個人の見解であり、所属する会社の公式見解ではありません。
https://www.intec.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away