0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gin って?

GinはGo言語でウェブAPIを作成するためのフレームワークです。
簡単にかけるのにパフォーマンスも良い!
そんな理由で人気のあるフレームワークです。

使い方

俯瞰して見られるように全体のコードを乗せておきます。
サッと流し見をしてから、詳細を見ていきましょう。

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

type User struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

var users []User

func main() {
	server := gin.Default()

	server.GET("/score", getUsers)   // GetのAPIを登録
	server.POST("/score", addScores) // PostのAPIを登録

	err := server.Run(":8080")
	if err != nil {
		fmt.Println("Error starting server")
		return
	}
}

func getUsers(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"users": users,
	})
}

func addScores(c *gin.Context) {

	var user User
	err := c.BindJSON(&user) // リクエストのボディを構造体に変換
	if err != nil {
		fmt.Println("Error reading body")

		c.JSON(http.StatusBadRequest, gin.H{ // エラーがあった場合はエラーメッセージを返す
			"message": "Error reading body",
		})
		return
	}

	users = append(users, user) // ユーザーを追加
	c.JSON(http.StatusOK, gin.H{
		"message": "Add User",
	})
}

サーバーを立ち上げる

    server := gin.Default()
    err := server.Run(":8080")
    if err != nil {
        fmt.Println("Error starting server")
        return
    }

この部分ではサーバーを立ち上げていて、:8080 でポートを指定しています。
このコードを実行すると、http://localhost:8080 で自動的に立ち上がります。

	server.GET("/score", getUsers)   // GetのAPIを登録
	server.POST("/score", addScores) // PostのAPIを登録

この部分では、/score というエンドポイントに対してGETとPOSTのAPIを登録しています。
GETのリクエストが来たら getUsers 関数が呼ばれ、POSTのリクエストが来たら addScores 関数が呼ばれます。

func getUsers(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
        "users": users,
    })
}

なぞの gin.Context というのは、リクエストやレスポンスに関する情報を持っている構造体です。
これを使って、リクエストに対してレスポンスを返していきます。
基本的な使い方はこれだけですが、詳しい中身を知りたい方はこちらを参照してください。
ここらへんはフレームワークの使い方なので暗記になりがちですね。

	var user User
	err := c.BindJSON(&user) // リクエストのボディを構造体に変換

この部分では、リクエストのボディを構造体に変換しています。
もしも何かしらのエラーがあった場合は、err にエラーが入るので、それを使ってエラーハンドリングを行います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?