偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

跟著官網(wǎng)學(xué)Go之基于Gin開發(fā)一個(gè)簡(jiǎn)單的RESTful API

開發(fā) 前端
我們可以看到類型后面用json標(biāo)識(shí)了別名,其主要作用則是當(dāng)該struct序列化成json時(shí),會(huì)序列化為該別名,如果沒有別名則按屬性名展示。

前面已經(jīng)將Go1.17.6安裝好了,這一小節(jié),繼續(xù)跟著官網(wǎng)學(xué)習(xí)基于Gin開發(fā)RESTful API

環(huán)境準(zhǔn)備

這里,我在E盤新建一個(gè)名為ginrest的文件夾,然后用vscode打開該文件夾,繼續(xù)使用cmd命令進(jìn)入到E:\ginrest文件夾,然后執(zhí)行g(shù)o mod init命令

此時(shí),在該文件夾下會(huì)生成一個(gè)名為go.mod的文件

新建main.go

前面基礎(chǔ)準(zhǔn)備好后,我們就需要準(zhǔn)備程序該有的入口,那便是新建一個(gè)main.go文件,

在該文件中加入包名package main

我繼續(xù)新建一個(gè)名為album的struct,go中的struct類似于C#中的類,在Go中,定義一個(gè)struct的標(biāo)準(zhǔn)格式如下

type 名 struct{
字段名 字段類型
}

我們?cè)谠搒truct中加入一些字段屬性

type album struct {
Id string `json:"id"`
Title string `json:"title"`
Artist string `json:"artist"`
Price float64 `json:"price"`
}

我們可以看到類型后面用json標(biāo)識(shí)了別名,其主要作用則是當(dāng)該struct序列化成json時(shí),會(huì)序列化為該別名,如果沒有別名則按屬性名展示。

我新建一個(gè)album的數(shù)組,主要是為后續(xù)數(shù)據(jù)讀取做準(zhǔn)備

var albums = []album{
{Id: "1", Title: "Blue Train", Artist: "John Coltrane", Price: 56.99},
{Id: "2", Title: "Jeru", Artist: "Gerry Mulligan", Price: 17.99},
{Id: "3", Title: "Sarah Vaughan and Clifford Brown", Artist: "Sarah Vaughan", Price: 39.99},
}

使用Gin

前面把基礎(chǔ)的準(zhǔn)備工作已經(jīng)做好了,現(xiàn)在便是進(jìn)入主題,開始使用Gin,引入Gin包,現(xiàn)在main.go中使用import導(dǎo)入包并編寫main方法,在main方法中使用gin創(chuàng)建一個(gè)簡(jiǎn)單的Http服務(wù)器

import "github.com/gin-gonic/gin"
func main() {
router := gin.Default()

router.Run("0.0.0.0:8080")
}

這里是0.0.0.0:8080是監(jiān)聽本機(jī)的8080端口,其實(shí)也可以直接使用:8080,如:router.Run(":8080"),端口號(hào)可以自行調(diào)整,如果不指定,默認(rèn)端口號(hào)也是8080。此時(shí)通過cmd執(zhí)行g(shù)o get .來下載gin的依賴包,這是不是類似.Net里面的Nuget包管理呢?

依賴包下載完成后,此時(shí),我們的go.mod文件便會(huì)新增一來記錄,并且會(huì)多出一個(gè)go.sum的文件,它為我們記錄了依賴包版本信息。

此時(shí),我們的程序就可以運(yùn)行了,

這時(shí),我們?cè)L問一下8080端口,服務(wù)端會(huì)返回404 page not found,那是因?yàn)槲覀儸F(xiàn)在什么都還沒有做,

我們繼續(xù)來分別實(shí)現(xiàn)獲取(getAlbums)和添加(postAlbums)兩個(gè)方法,Go語言中的方法和C#有些差別,

C#中大概就是這樣子

public List<Albums> GetAlbums(){

}

Go中需要func關(guān)鍵字來申明,下面就跟著官網(wǎng)的例子繼續(xù)寫

func getAlbums(c *gin.Context) {
c.IndentedJSON(http.StatusOK, albums)
}

func postAlbums(c *gin.Context) {
var newAlbum album

if err := c.BindJSON(&newAlbum); err != nil {
return
}

albums = append(albums, newAlbum)
c.IndentedJSON(http.StatusCreated, newAlbum)
}

接下來就是將方法注冊(cè)到Gin的路由中

router.GET("/albums", getAlbums)
router.POST("/albums", postAlbums)

這里的注冊(cè)的路由路徑都是/albums,通過Get和Post這兩種請(qǐng)求方式來區(qū)分不同的邏輯

現(xiàn)在運(yùn)行起來后,在瀏覽器訪問

http://localhost:8080/albums便能正常返回?cái)?shù)據(jù)

接下來,使用postman發(fā)起post請(qǐng)求,當(dāng)服務(wù)端接受到請(qǐng)求后,會(huì)將提交的數(shù)據(jù)追加到數(shù)組中

這里只是使用Gin來實(shí)現(xiàn)簡(jiǎn)單的Get和Post,就從這個(gè)簡(jiǎn)單的示例中,我們可以感受到它的靈活和簡(jiǎn)潔,后面我們?cè)倮^續(xù)跟進(jìn)學(xué)習(xí),最好是結(jié)合實(shí)際例子來做些小應(yīng)用。


責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-02-09 07:52:36

GolangGo語言

2022-10-08 00:00:00

AdminUser數(shù)據(jù)庫鑒權(quán)

2023-02-01 08:04:07

測(cè)試flask網(wǎng)頁

2022-02-07 10:21:54

.NET配置對(duì)象

2022-08-29 17:25:19

鴻蒙應(yīng)用開發(fā)

2022-09-30 14:08:26

Hap應(yīng)用鴻蒙

2022-09-28 13:57:41

鴻蒙開源

2015-10-12 15:50:07

PaaS云平臺(tái)開發(fā)go

2011-09-08 13:41:53

Widget

2022-11-25 16:48:54

鴻蒙Stage HAP

2022-09-16 15:22:16

測(cè)試套件鴻蒙

2009-07-07 11:38:54

jsp oracle

2022-08-19 19:02:20

開源鴻蒙操作系統(tǒng)

2022-10-17 14:29:24

鴻蒙應(yīng)用開發(fā)

2025-05-22 06:48:50

RAGAI應(yīng)用開發(fā)框架DeepSeek

2024-05-13 08:40:02

Go事件驅(qū)動(dòng)編程

2019-05-08 14:37:49

Web服務(wù)器HTTP

2022-08-05 12:05:07

JavaGuava集合

2018-06-08 16:48:09

PythonQQ機(jī)器人

2022-11-03 15:47:04

HTTP通信協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)