페네라판 서비스 레이어 패턴 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, 테스트 가능, 확장 가능.

프락텍


  • Buatlah 폴더 베르나마 서비스 레이어 패턴 atau yang lainnya
  • buat file main.go, file ini adalah file yang pertama kali akan diakses
  • isi file main.go tadi seperti berikut

  • 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)
    
    }
    
    


  • setelah itu buat 폴더 컨트롤러 dan buat 파일 user.go didalamya, isi 파일 tersebut dengan 코드 dibawah ini

  • 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)
    }
    
    


  • setelah itu buat 폴더 모델 dan buat 파일 user.go didalamya.
  • isi 파일 user.go dengan 코드 dibawah ini

  • package service
    
    type User struct {
        ID       int
        Name     string
        Username string
        Email    string
    }
    
    


  • buat 폴더 서비스 dan buat 파일 view.go dan Manipulation.go
  • isi 파일 view.go dengan 코드 dibawah ini

  • 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)
    }
    


  • isi 파일 조작.go dengan 코드 dibawah ini

  • 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)
    }
    


  • setelah itu buka terminal dan jalankan perintah berikut
  • go mod init service-layer-pattern
  • github.com/gorilla/mux를 받으십시오.
  • go run main.go (untuk memulai 웹 서버)


  • 펜젤라산 싱캇



    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

    좋은 웹페이지 즐겨찾기