Link Pembelajaran Programmer Zaman Now
Link Documentasi
Setup
Driver MySQL
go get -u github.com/go-sql-driver/mysql
HTTP Router
go get github.com/julienschmidt/httprouter
Validator
go get github.com/go-playground/validator
Testing
go get github.com/stretchr/testify
Create Open Api Spec
apispec.json
- like
sweger
atau dokumentasi api yang akan di buat
- like
Create Database
Create Database belajar_golang_restful_api
create database belajar_golang_restful_api;
&
create database belajar_golang_restful_api_test;
Create Table category
CREATE TABLE category (
id INTEGER PRIMARY KEY auto_increment,
name VARCHAR(200) NOT NULL
)
Step By Step
-
Create
Repository
Foldercategory_repository.go
category_repository_impl.go
- Untuk
query
keDatabase
- Untuk
-
Create
Service
Foldercategory_service.go
category_service_impl.go
- untuk
logic
dan pengolahan data yang di dapat dariDatabasae
- untuk
-
Create
Controller
Foldercategory_controller.go
category_controller_impl.go
- untuk mengambil data yang telah di olah di
Sevice
dan dan di return sebagairesponse
API
- untuk mengambil data yang telah di olah di
-
app
Folder -> configdatabase.go
- setup config database
router.go
- setup router dan kumpulan dari semua
endpoint
API
- setup router dan kumpulan dari semua
-
exception
Folder -> handlererror
error_handler.go
- handler err speerti:
notFoundErr
validator
internal server err
- handler err speerti:
error_not_found.go
- karana error notfound tidak err yang di dapat dari database dan tidak ada triker spesifik maka butuh di buat
struct
agar bisa di persifikasi dan balikan dari kondisinotfound
- sedangakan
validate
sudah di handle olehvalidator
- dan
internal server err
pun sama karna server yang tidak dapat response atau mati
- karana error notfound tidak err yang di dapat dari database dan tidak ada triker spesifik maka butuh di buat
-
Helper
Folder -> function yangreuseble
error.go
- handle err balikan di varible
tx.go
- handle
commit
danrollback
daritx
- handle
json.go
- handle
read
databody
dan didecode
agar bisa di olah - handle
write
ngeencode
data yang telah di olah untuk menjadiresponse
- handle
model.go
ToCategoryRes
- template response di properti
data
untuk singgle data
- template response di properti
ToCategoryResult
- template response di properti
data
untuk data yang banyak, seperti untukfindAll
- template response di properti
-
model
Folder -> jika di TS sepertientity
domain
- model dari
category
dan diperuntukan supaya kita bisa ngefilter
data yang mau dishow
atau dihide
data daridatabase
- model dari
web
category_create_req.go
->entity
ataumodel
dari databody
yang di kirim dari Apicreate category
category_res.go
- model untuk response api
category_update_req.go
- model untuk response api update
web_res.go
- struktur date response api
-
middleware
Folderauth_middleware.go
- handle
AuthMiddleware
api
- handle
-
test
Foldercategory_controller_test.go
- test by endpoint