Monday, November 23, 2020

Golang #01 - Membuat Restapi + mysql

https://play-lh.googleusercontent.com/edQ8_8or0qX3JymcLz5jrHskKXLGjj7b7lGYuBW-oUMmK75vspumKniy6gukdOuzbcNl=s180 

RESTful API / REST API merupakan implementasi dari API (Application Programming Interface). REST (Representional State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protokol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Dimana tujuannya adalah untuk menjadikan sistem yang memiliki performa yang baik, cepat dan mudah untuk di kembangkan (scale) terutama dalam pertukaran dan komunikasi data

 

Buat table di mysql db

CREATE TABLE IF NOT EXISTS `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(50) NOT NULL DEFAULT '0',
`last_name` varchar(50) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
 

Install package

go get github.com/go-sql-driver/mysql
go get github.com/gorilla/mux
 

Main.go

 package main

import (
    "fmt"
    "log"
    "net/http"
        "encoding/json"
        "api/mysql1"

    _ "github.com/go-sql-driver/mysql"
    "github.com/gorilla/mux"
)

func main() {

    router := mux.NewRouter()
    router.HandleFunc("/getusers", returnAllUsers).Methods("GET")
    http.Handle("/", router)
    fmt.Println("Connected to port 1234")
    log.Fatal(http.ListenAndServe(":1234", router))

}


func returnAllUsers(w http.ResponseWriter, r *http.Request) {
    var users Users
    var arr_user []Users
    var response Response

    db := connect()
    defer db.Close()

    rows, err := db.Query("Select id,first_name,last_name from person")
    if err != nil {
        log.Print(err)
    }

    for rows.Next() {
        if err := rows.Scan(&users.Id, &users.FirstName, &users.LastName); err != nil {
            log.Fatal(err.Error())

        } else {
            arr_user = append(arr_user, users)
                        
        }
    }

    response.Status = 1
    response.Message = "Success"
    response.Data = arr_user

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(response)

       fmt.Println("ok...")
}


model.go

package main

type Users struct {
    Id        string `form:"id" json:"id"`
    FirstName string `form:"firstname" json:"firstname"`
    LastName  string `form:"lastname" json:"lastname"`
}

type Response struct {
    Status  int    `json:"status"`
    Message string `json:"message"`
    Data    []Users
}


mysql.go

package main

import (
    "database/sql"
    "log"
        "fmt"
)

func connect() *sql.DB {
    db, err := sql.Open("mysql", "root:xxxx@tcp(xxxxxxx:3306)/xxxxdb")

    if err != nil {
        log.Fatal(err)
    }
        fmt.Println("connect db ok !")
    return db
}

No comments:

Post a Comment

Membuat Counter mundur menuju Azan dengan Arduino Wemos

Membuat Counter Mundur Menuju Azan dengan Arduino Wemos  #include <Wire.h> #include "RTClib.h" #include "SPI.h" #i...