페네라판 서비스 레이어 패턴 pada golang sederhana
13124 단어 goservicelayerpattern
Apa Itu 서비스 계층 패턴
sebelum masuk ke praktek, saya akan menjelaskan terlebih dahulu apa itu 서비스 레이어 패턴
Service layer is an architectural pattern, applied within the service-orientation design paradigm, which aims to organize the services, within a service inventory, into a set of logical layers. Services that are categorized into a particular layer share functionality. This helps to reduce the conceptual overhead related to managing the service inventory, as the services belonging to the same layer address a smaller set of activities.
sederhananya 서비스 레이어 패턴 adalah pola design arsitektur berbasis 서비스 yang memishan logic business dari controller, sehingga controller lebih clean.
서비스 계층 패턴 dapat membuat 코드 menjadi lebih rapi, 테스트 가능, 확장 가능.
프락텍
package main
import (
"fmt"
"net/http"
. "service-layer-pattern/controllers"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/", GetIndexController).Methods("GET")
r.HandleFunc("/insert-data", PostData).Methods("POST")
fmt.Println("Server Running On Port 8000")
http.ListenAndServe(":8000", r)
}
package controller
import (
"fmt"
"math/rand"
"net/http"
. "service-layer-pattern/services"
)
type User struct {
ID int
Name string
Username string
Email string
}
func GetIndexController(w http.ResponseWriter, r *http.Request) {
ParseVieww(w)
}
func PostData(w http.ResponseWriter, r *http.Request) {
var users []User
err := r.ParseForm()
if err != nil {
fmt.Println(err.Error())
}
name := r.FormValue("name")
username := r.FormValue("username")
email := r.FormValue("email")
id := rand.Int()
fmt.Println(name)
nameUpper, usernameUpper, emailUpper := ParseToUpperString(name, username, email)
users = append(users, User{id, nameUpper, usernameUpper, emailUpper})
fmt.Println(users)
}
package service
type User struct {
ID int
Name string
Username string
Email string
}
package service
import (
"net/http"
"text/template"
)
func ParseVieww(w http.ResponseWriter) {
t, err := template.ParseFiles("view/index.html")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
t.Execute(w, nil)
}
package service
import "strings"
func ParseToUpperString(name string, username string, email string) (string, string, string) {
return strings.ToUpper(name), strings.ToUpper(username), strings.ToUpper(email)
}
펜젤라산 싱캇
cara kerja code diatas adalah saat request masuk ke route, route akan menjalankan controller sesuai dengan uri dan method yang digunakan.
setelah it dari controller akan mengeksekusi service yang telah ditentukan, pada kasus ini kita melakukannya di controller GetIndexController, dan PostData.
pada GetIndexController kita mengeksekusi 서비스 보기 yang terletak pada service/view.go,yang akan menampilkan 템플릿 atau 보기 yang telah ditentukan.
pada PostData kita mengeksekusi 서비스 PostToUpperString yang terletak pada service/manipulation.go, yang akan melakukan konversi setiap 매개변수 yang diberikan ke huruf kapital dan mengembalikannya.
Alasan Melakukan 서비스 레이어 패턴
rug mungkin disini melakukan 서비스 레이어 패턴 terlihat merepotkan karna kita harus membuat banyak 파일 hanya untuk melakukan sebuh operasi sederhana, tapi saat aplikasi kita sudah besar 패턴 ini akan sangat membantu logic telah kan sangat membantu 논리 양베룰랑.
Kenapa Tidak Parsing Variable r Yang merupakan *http.Request Ke Service
Hal ini sebenarnya dapat saya lakukan pada contoh diatas, dan menyimpan nilai ke 가변 pada PostToUpperString, tapi hal ini tidak saya lakukan karena pada hakikatnya sebuah 서비스 tidak boleh berhubungan langsung denganmak 코드 테스트
jika terdapat kesalahan atau hal yang keliru pada penjelasan atau code saya diatas mohon berikan tanggapan dan komentarnya, 카레나 사야 juga baru belajar
https://en.wikipedia.org/wiki/Service_layer_pattern
Reference
이 문제에 관하여(페네라판 서비스 레이어 패턴 pada golang sederhana), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alfarizzi/penerapan-service-layer-pattern-pada-golang-sederhana-54na텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)