본문 바로가기
IT 초보코딩의 세계/Go 언어

[Block Chain] Go언어의 RESTful API, Gin Framework, Model&Database Layer 1장

by 조이럭키7 2023. 4. 15.
반응형

◆ RESTful API

웹 서비스에서 자원을 요청 및 제어할 때 적용되는 일련의 규칙

자원은 보통 HTML 문서(웹 페이지)JSON 문서(단순 정보 조회)

JSON이란 JavaScript Object Notation의 약자로 자바스크립트의 객체를 표현하는 방식으로 API에서 가장 많이 쓰이는 데이터 형식

대부분의 RESTful APIHTTP 사용


◆ Gin Framework

Gin 프레임워크는 고성능 RESTful API 개발에 많이 사용되는 Go 기반의 오픈 소스 프레임워크

https://github.com/gin-gonic/gin

 Gin 프레임워크는 성능도 높고 실제 RESTful API 구현하는 데 사용할 수 있는 간단하고 사용하기 쉬운 API 제공


◆ Model & Database Layer

데이터 모델이란 데이터베이스에 저장된 데이터를 표현하는 자료 구조

세가지 모델 필요

  → Product(상품)

  → Customer(고객)

  → Customer Order(주문)

src 디렉토리에 models 디렉토리를 생성하고 models.go 파일을 생성하고 작성

package models

import (
  "time"
)

type Product struct {
  Image       string  `json:"img"`
  ImagAlt     string  `json:"imgalt"`
  Price       float64 `json:"price"`
  Promotion   float64 `json:"promotion"`
  PoructName  string  `json:"productname"`
  Description string  `json:"desc"`
}

type Customer struct {
  FirstName string `json:"firstname"`
  LastName  string `json:"lastname"`
  Email     string `json:"email"`
  Pass      string `json:"password"`
  LoggedIn  bool   `json:"loggedin"`
}

type Order struct {
  Product
  Customer
  CustomerID   int       `json:"customer_id"`
  ProductID    int       `json:"product_id"`
  Price        float64   `json:"sell_price"`
  PurchaseDate time.Time `json:"purchase_date"`
}

models 디렉토리로 프롬프트를 이동해서 go install 명령 수행


◆ 인터페이스 생성

src 디렉토리에 dblayer 디렉토리를 생성하고 dblayer.go 파일을 생성하고 작성

package dblayer

import "models"

type DBLayer interface {
  GetAllProducts() ([]models.Product, error)
  GetPromos() ([]models.Product, error)
  GetCustomerByName(string, string) (models.Customer, error)
  GetCustomerByID(int) (models.Customer, error)
  GetProduct(int) (models.Product, error)
  AddUser(models.Customer) (models.Customer, error)
  SignInUser(username, password string) (models.Customer, error)
  SignOutUserById(int) error
  GetCustomerOrdersByID(int) ([]models.Order, error)
  AddOrder(models.Order) error
  GetCreditCardCID(int) (string, error)
  SaveCreditCardForCustomer(int, string) error
}

dblayer 디렉토리로 프롬프트를 이동하고 go build


 

반응형

댓글