[Golang]GitHub REST APIを使って簡単なWebアプリケーションを作ろう!

こんにちは。KOUKIです。

GitHub REST APIを使って、簡単なWebアプリケーションを開発します。

JavaScript版はこちらです。

作成するアプリケーション

こんな感じのものを作ります。

ワークスペースの作成

まずは、ワークスペースを作成します。

Dockerの準備

開発環境にDockerを選択していますが、Docker上でなくとも「go run main.go」で動くと思います。

Dockerfile

docker-compose.yml

アプリケーション開発

早速、アプリケーションを開発しましょう。

画面表示

まずは、アプリケーションの画面表示を行いましょう。画面がないと実態がわかりずらいですからね。

Webアプリの作成方法については、以下の記事が参考になると思います。

Go言語

まずは、Go言語からHTMLテンプレートを読み込んで、ブラウザに表示する処理を書きます。

HTML

CSS

動作確認

画面を表示してみましょう。以下のコマンドで、コンテナを立ち上げます。

ブラウザから「http://localhost/view」にアクセスしてください。

ドメインの作成

次にドメインを作成します。

「https://api.github.com/users/golang」にブラウザからアクセスしてみてください。下記のデータが取得できるはずです。

このデータをGo言語で扱えるようにするために、ドメインを作成します。

注意点は、「json:"avatar_url"」のように実際に取得できるデータのパラメータに名前を一致させる必要があります。パースするんですから当たり前ですよね。

次に、「https://api.github.com/users/golang/repos?sort=created」にアクセスして得られる情報を確認します。

かなりたくさんの情報を取得できるみたいですね。これもドメイン化します。

Interfaceの定義

Interfaceを定義しておくと便利な時があるので、定義しましょう。

Getリクエストの作成

Getリクエストをコントロールするインスタンスとメソッドを作成しましょう。

jsonのNewDecoderを使って、APIから得られるデータをドメインに定義したStructへパースしています。

main.goを以下のように修正後に、terminalから「curl localhost/create」を打ってみましょう。

すると、以下のデータが取得できていることがわかります。

APIから得られるデータとStructのjsonタグに定義したnameが一致していれば、このようにGo言語がパースをしてくれます。

テンプレートファイルの作成

次は、テンプレートファイルを作成しましょう。

3つのタイプを作りたいと思います。

  1. 検索前のページ
  2. 検索後のページ
  3. エラーページ

リクエストされて、取得したデータによって表示するデータの切り替えを行います。色々方法はあると思いますが、筆者は以下の感じに実装しました。

少し長いですが、出力したいhtmlを定数で定義しておいて、取得したデータによってresult.htmlに書き込んでいるだけです。

result.htmlは、main関数から読み込みます。

createHandler関数の修正

createHandler関数内で、テンプレート処理を呼び出し、result.htmlを画面に返す処理を追加します。

これで完成です!

おわりに

APIのリクエスト送信、データの表示、テンプレートファイルの作成全てをGo言語で作成しました。

Go言語は何でもできますね^^

それでは、また!

Go言語まとめ

ソースコード

main.go

domain.go

rest.go

template.go

コメントを残す