Go-RESTful-創建RESTful API服務(三)|焦點報道
2023-05-02 11:13:33 來源:騰訊云
(資料圖片僅供參考)
下面是一個完整的示例,展示如何使用Go-RESTful框架創建一個簡單的RESTful API服務。這個示例提供了兩個路由:GET /users和POST /users,分別用于獲取用戶列表和創建一個新用戶。用戶信息以JSON格式返回給客戶端。
package mainimport ( "encoding/json" "log" "net/http" "github.com/emicklei/go-restful")// 用戶結構體type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"`}// 用戶列表var users = []User{ {ID: 1, Name: "Alice", Email: "alice@example.com"}, {ID: 2, Name: "Bob", Email: "bob@example.com"}, {ID: 3, Name: "Charlie", Email: "charlie@example.com"},}// 獲取所有用戶func getUsers(request *restful.Request, response *restful.Response) { // 將用戶列表轉換為JSON格式,并寫入HTTP響應 response.WriteEntity(users)}// 創建一個新用戶func createUser(request *restful.Request, response *restful.Response) { // 從HTTP請求中讀取用戶信息 var user User err := request.ReadEntity(&user) if err != nil { response.WriteErrorString(http.StatusBadRequest, err.Error()) return } // 生成新的用戶ID maxID := 0 for _, u := range users { if u.ID > maxID { maxID = u.ID } } user.ID = maxID + 1 // 將新用戶添加到用戶列表 users = append(users, user) // 返回新用戶信息 response.WriteHeaderAndEntity(http.StatusCreated, user)}func main() { // 創建一個新的WebService對象 ws := new(restful.WebService) // 定義路由 ws.Route(ws.GET("/users").To(getUsers)) ws.Route(ws.POST("/users").To(createUser)) // 將WebService對象注冊到RESTful框架中 restful.Add(ws) // 啟動HTTP服務器 log.Fatal(http.ListenAndServe(":8080", nil))}
在這個示例中,我們定義了一個名為User的結構體,用于表示用戶信息。我們還定義了一個名為users的變量,用于存儲所有用戶的列表。
我們編寫了兩個處理函數:getUsers和createUser。getUsers函數用于返回所有用戶的列表,createUser函數用于創建一個新用戶。這兩個處理函數都遵循了Go-RESTful的處理函數簽名,并使用了Request和Response對象來處理HTTP請求和響應。
我們還創建了一個新的WebService對象“ws”,并使用其Route方法來定義了兩個路由,分別是GET /users和POST /users。這兩個路由分別指向了不同的處理函數getUsers和createUser。
最后,我們將WebService對象注冊到Go-RESTful框架中,并啟動了HTTP服務器。
關鍵詞:
相關閱讀
-
Go-RESTful-創建RESTful API服務(三)|焦點報道
下面是一個完整的示例,展示如何使用Go-RESTful框架創建一個簡單的R... -
天天即時:美國伊利諾伊州州際公路連環...
本文轉自【央視新聞客戶端】;當地時間5月1日,美國伊利諾伊州南部5... -
小鵬G6最新消息:網傳5月下旬預售,6月上市
5月2日消息,網傳小鵬G6將在“5月下旬開啟預售,6月正式上市”,該... -
天天最新:勞動者的十二時辰 致敬全國...
現代快報網是由鳳凰出版傳媒集團旗下的現代快報傾力打造的江蘇新聞... -
希臘學者:教育合作有利于推動希中文明...
新華社雅典4月30日電(記者于帥帥劉葉雨)希臘教育界官員及多位學者... -
當前播報:奮斗的過程本身是一種幸福
“凡人有光,閃著渺小耀眼的鋒芒。”在我們身邊,每一位平凡的勞動... -
井深9472米?亞洲最深井在塔里木盆地正式開鉆
人民網北京5月2日電(記者杜燕飛)記者從中國石化獲悉,5月1日,中... -
“付出總會有回報” 95后天車司機苦練...
“我們日常吊裝的火車零部件有25噸左右,稍有不慎就會發生安全問題... -
柳祥國:創“鋅”帶頭人 用心做就有無...
“鋅電解的工藝看似簡單、流程短,但其中包含了很多技巧和學問。只... -
世界報道:在我心中你最美歌詞_在我心中...
歡迎觀看本篇文章,小升來為大家解答以上問題。在我心中你最美歌詞... -
國際論壇:中國是全球互聯互通的關鍵驅...
國際論壇麥肯錫全球研究院對30條價值鏈、約6000種產品的調查研究顯... -
足球推文丨弗蘭克·蘭帕德:“我認為將...
足球推文丨弗蘭克·蘭帕德:“我認為將阿森納的故事與我們的故事進... -
粉煤灰在混凝土中的作用主要有 粉煤灰...
今天來聊聊關于粉煤灰在混凝土中的作用主要有,粉煤灰在混凝土中的... -
剝出海瓜子肉炒蟹,廈門這家古厝黑珍珠...
曲徑通幽。竹林深深,紅磚木門,從熱鬧的馬路拐進紅厝8號就被這清雅... -
環球今頭條!北宋時期,朋黨之爭的主要...
再一條就是“不殺大臣”,宋朝的這一制度給了宋朝的言官和士大夫很... -
2023年促進跨境貿易便利化專項行動展開
據新華社北京電(記者鄒多為)為進一步打造優化口岸營商環境示范高... -
在提質增效的加速度中穩步向前
春日里,杭州地鐵三號線二期項目世紀大道站施工現場,一聲“開工”... -
廣西最長跨海大橋全面進入上部結構施工...
這是建設中的廣西龍門大橋項目(5月1日攝,無人機照片)。近日,位... -
微視界里的大國匠心
從“中國天眼”上的一根鋼索,到鋪就貴州“高速平原”的一粒砂石;... -
天天熱議:賭客在澳門賭場爆發混戰,警方...
大批內地旅客趁“五一黃金周”前往澳門旅游,但昨日出現不愉快事件。