service etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
service etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Ekim 2016 Cumartesi

Go’da RESTful microservice yazma

Basit bir microservice yazımı: http://www.eyupdalan.com/2016/10/goda-basit-restful-microservice-yazma.html

İhtiyaca göre daha kompleks handler’lar, function’lar da oluşturulabilir.

type AboutMe struct {
     Name        string
     Description string
}

func aboutHandler(w http.ResponseWriter, r *http.Request) {
     about := AboutMe{}
     about.Name = "eyüp dalan"
     about.Description = "software developer"

     b, err := json.Marshal(about)

     if (err != nil) {
            panic(err)
     }

     w.Write(b)
}

Örneğin yukarıdaki örnek, ilkine nazaran biraz daha kompleks.
İlk olarak bir AboutMe isimli, Name ve Desription adında iki string property’si olan bir struct tanımlanır. “aboutHandler” fonsiyonu da bu struct tipinde bir datayı json’a çevirerek servis üzerinden dönmesini sağlar. Obje json’a “json.Marshal” ile çevrilir. Bir hata oluşması durumunda hata “panic” metodu ile fırlatılır. Son olarak da oluşan json bayte array http.ResponseWriter ile response olarak dönülür.

main fonksiyonunda bu handler için yeni bir endpoint eklenir. Sonuç  olarak maşn fonksiyonu aşağıdaki gibi olur:

func main() {
    http.HandleFunc("/", handler)
    http.HandleFunc("/about", aboutHandler)
    http.ListenAndServe(":8080", nil)
}


28 Ekim 2016 Cuma

Go’da basit RESTful microservice yazma

import (
    "fmt"
    "net/http"
)

İlk olarak projeye “net/http” kütüphanesini eklemek gerekmektedir. 

package main

import (
     "fmt"
     "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
     fmt.Fprintln(w, "Welcome ", r.URL.Path)
     fmt.Fprintln(w, "Welcome ", r.URL.Path[1:])
}

func main() {
     http.HandleFunc("/", handler)
     http.ListenAndServe(":8080", nil)
}

Bu kod parçası iki önemli kısımdan oluşuyor: handler ve main
Handler fonksiyonu http.ResponseWriter ve http.Request tiplerinde iki parametre alır. Bu parametreleri de kullanarak server’a bir text döner. Bu text sabit bir “Welcome” string’inden ve url’den alınmış değerden oluşmaktadır. Örneğin url “http://localhost:8080/eyupdalan” ise “r.URL.Path” ile buradaki “/eyupdalan” kısmı alınır. başındaki “/” kısmı, “r.URL.Path[1:]” şeklinde atılabilir.

Main fonksiyonu kısmında, “http.ListenAndServe” fonksiyonundan faydalanılarak microservice’teki tanımlı tüm handler fonksiyonlarının 8080 portundan yönetilmesi sağlanmaktadır. 

Ubuntu'da bir porttaki servisi sonlandırmak

Servisin process id’sinin (PID) bulunması
fuser 8080/tcp

Bir portta çalışan process’in sonlandırılması:
fuser -k 8080/tcp