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