Go dili ile get,post,put,delete yapan bir örnek controller




Tabii, Go dilinde GET, POST, PUT ve DELETE isteklerini işleyen basit bir HTTP controller örneği aşağıda verilmiştir:

go
package main import ( "encoding/json" "log" "net/http" "strconv" "github.com/gorilla/mux" ) // Book struct defines the book structure type Book struct { ID int `json:"id"` Title string `json:"title"` Author string `json:"author"` } var books []Book var nextID = 1 // getBooks handles GET requests to fetch all books func getBooks(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(books) } // getBook handles GET requests to fetch a single book by ID func getBook(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") params := mux.Vars(r) id, _ := strconv.Atoi(params["id"]) for _, item := range books { if item.ID == id { json.NewEncoder(w).Encode(item) return } } w.WriteHeader(http.StatusNotFound) json.NewEncoder(w).Encode(map[string]string{"message": "Book not found"}) } // createBook handles POST requests to create a new book func createBook(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") var book Book _ = json.NewDecoder(r.Body).Decode(&book) book.ID = nextID nextID++ books = append(books, book) json.NewEncoder(w).Encode(book) } // updateBook handles PUT requests to update an existing book func updateBook(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") params := mux.Vars(r) id, _ := strconv.Atoi(params["id"]) for i, item := range books { if item.ID == id { books = append(books[:i], books[i+1:]...) var book Book _ = json.NewDecoder(r.Body).Decode(&book) book.ID = id books = append(books, book) json.NewEncoder(w).Encode(book) return } } w.WriteHeader(http.StatusNotFound) json.NewEncoder(w).Encode(map[string]string{"message": "Book not found"}) } // deleteBook handles DELETE requests to delete a book by ID func deleteBook(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") params := mux.Vars(r) id, _ := strconv.Atoi(params["id"]) for i, item := range books { if item.ID == id { books = append(books[:i], books[i+1:]...) json.NewEncoder(w).Encode(map[string]string{"message":
"Book deleted"}) return } } w.WriteHeader(http.StatusNotFound) json.NewEncoder(w).Encode(map[string]string{"message": "Book not found"}) } func main() { // Initialize the router r := mux.NewRouter() // Route handlers r.HandleFunc("/books", getBooks).Methods("GET") r.HandleFunc("/books/{id}", getBook).Methods("GET") r.HandleFunc("/books", createBook).Methods("POST") r.HandleFunc("/books/{id}", updateBook).Methods("PUT") r.HandleFunc("/books/{id}", deleteBook).Methods("DELETE") // Sample data books = append(books, Book{ID: 1, Title: "1984", Author: "George Orwell"}) books = append(books, Book{ID: 2, Title: "Brave New World", Author:
"Aldous Huxley"}) // Start the server log.Fatal(http.ListenAndServe(":8000", r)) }

Bu örnekte mux router'ını kullanarak dört temel HTTP metodunu (GET, POST, PUT, DELETE) işleyen bir API controller oluşturulmuştur. Bu controller, basit bir kitap listesi yönetimi yapar. Her bir fonksiyon farklı bir HTTP metodunu işleyerek istekleri işler ve ilgili işlemleri gerçekleştirir.

Bu kodu çalıştırmak için önce gerekli paketleri yüklemeniz gerekebilir:

sh
go get -u github.com/gorilla/mux

Ardından, main.go dosyanızda bu kodu çalıştırarak sunucunuzu başlatabilirsiniz. Bu örnekte basit bir veri yapısı olarak kitap listesi kullanılmıştır. Gerçek dünya uygulamalarında bu yapı veri tabanları ile entegre edilebilir.

Hiç yorum yok

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo