后端部分的 go 语言 后端服务 代码
时间: 2023-10-14 10:04:31 浏览: 47
以下是一个简单的示例,展示了如何使用Go语言编写一个基本的后端服务代码:
```go
package main
import (
"encoding/json"
"log"
"net/http"
"github.com/gorilla/mux"
)
type Customer struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Phone string `json:"phone"`
}
var customers []Customer
func main() {
router := mux.NewRouter()
router.HandleFunc("/customers", GetCustomers).Methods("GET")
router.HandleFunc("/customers", CreateCustomer).Methods("POST")
router.HandleFunc("/customers/{id}", GetCustomerByID).Methods("GET")
router.HandleFunc("/customers/{id}", UpdateCustomer).Methods("PUT")
router.HandleFunc("/customers/{id}", DeleteCustomer).Methods("DELETE")
log.Fatal(http.ListenAndServe(":8000", router))
}
func GetCustomers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(customers)
}
func CreateCustomer(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var customer Customer
_ = json.NewDecoder(r.Body).Decode(&customer)
customers = append(customers, customer)
json.NewEncoder(w).Encode(customer)
}
func GetCustomerByID(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
params := mux.Vars(r)
for _, item := range customers {
if item.ID == params["id"] {
json.NewEncoder(w).Encode(item)
return
}
}
json.NewEncoder(w).Encode(&Customer{})
}
func UpdateCustomer(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
params := mux.Vars(r)
for index, item := range customers {
if item.ID == params["id"] {
customers = append(customers[:index], customers[index+1:]...)
var customer Customer
_ = json.NewDecoder(r.Body).Decode(&customer)
customer.ID = params["id"]
customers = append(customers, customer)
json.NewEncoder(w).Encode(customer)
return
}
}
json.NewEncoder(w).Encode(customers)
}
func DeleteCustomer(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
params := mux.Vars(r)
for index, item := range customers {
if item.ID == params["id"] {
customers = append(customers[:index], customers[index+1:]...)
break
}
}
json.NewEncoder(w).Encode(customers)
}
```
上述代码使用了`gorilla/mux`库来处理路由和请求。它定义了一个包含CRUD操作的简单客户端API,使用了一个全局的`customers`切片来存储客户信息。
您可以根据自己的需求进行修改和扩展。请注意,此示例仅用于演示目的,实际应用中可能需要更多的错误处理、身份验证和授权等功能。