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