読者です 読者をやめる 読者になる 読者になる

備忘録

なんとなく暇なときにでも....

golangのechoフレームワークを使ってRestfulAPIを作る ~GETクエリを取得する~

本日は"GETクエリを取得する"です。(なぜかまだやってみてなかったので。)
前回まではこちら

hchckeeer.hatenadiary.jp


以下のリクエストを送信します。

curl -v GET -H "Content-Type: application/json" "http://localhost:3000/users?id=3&name=hogehoge&age=25"


実際のソースはこんな感じに…

import (
    "github.com/labstack/echo"

    "strconv"
)

type (
    User struct {
                Id         int64   `db:"id"`
                Name   string  `db:"name"`
                Age      int    `db:"age"`
    }
)


func main() {
    e := echo.New()
  
    /**
    * Routing
    */
    e.GET("/users", GetUser)
 
    // Start server
    e.Logger.Fatal(e.Start(":3000"))
}


func GetUser(c echo.Context) error {

    // string -> int
    /**
     *  Package strconv
     *  see https://golang.org/pkg/strconv/
     */
    id,_ := strconv.Atoi(c.QueryParam("id"))
    var name string = c.QueryParam("name")
    age,_ := strconv.Atoi(c.QueryParam("age"))

    var user *User = newUser(id, name, age)

    return c.JSON(http.StatusCreated, user)
}

//構造体の初期化
func newUser(id int, name string, age int) *User{
    user := new(User)
    user.ID = id
    user.Name = name
    user.Age = age

    return user
}

QueryParam("id")でGETクエリ内のidで指定された値を取得しています。
この時点ではstring型ですので、golangの標準パッケージのstrconvを利用してstring -> intにキャストしています。

strconv - The Go Programming Language

string -> intのキャストにはstrconv.Atoi(string) intを用いればよさそう。


本日は以上です。

github.com


これ読みたい….