GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)

Python027

GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下),第1张

当客户端在 发出POST请求时/albums,您希望将请求正文中描述的专辑添加到现有专辑数据中。

为此,您将编写以下内容:

1、编写代码

a.添加代码以将专辑数据添加到专辑列表。

在此代码中:

1)用于Context.BindJSON 将请求正文绑定到newAlbum。

2) album将从 JSON 初始化的结构附加到albums 切片。

3)向响应添加201状态代码,以及表示您添加的专辑的 JSON。

b.更改您的main函数,使其包含该router.POST函数,如下所示。

在此代码中:

1)将路径中的POST方法与 /albumspostAlbums函数相关联。

使用 Gin,您可以将处理程序与 HTTP 方法和路径组合相关联。这样,您可以根据客户端使用的方法将发送到单个路径的请求单独路由。

a.如果服务器从上一节开始仍在运行,请停止它。

b.从包含 main.go 的目录中的命令行,运行代码。

c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求。

该命令应显示添加专辑的标题和 JSON。

d.与上一节一样,使用curl检索完整的专辑列表,您可以使用它来确认添加了新专辑。

该命令应显示专辑列表。

当客户端向 发出请求时GET /albums/[id],您希望返回 ID 与id路径参数匹配的专辑。

为此,您将:

a.在您在上一节中添加的函数下方postAlbums,粘贴以下代码以检索特定专辑。

此getAlbumByID函数将提取请求路径中的 ID,然后找到匹配的专辑。

在此代码中:

(1)Context.Param用于从 URL 中检索id路径参数。当您将此处理程序映射到路径时,您将在路径中包含参数的占位符。

(2)循环album切片中的结构,寻找其ID 字段值与id参数值匹配的结构。如果找到,则将该album结构序列化为 JSON,并将其作为带有200 OK HTTP 代码的响应返回。

如上所述,实际使用中的服务可能会使用数据库查询来执行此查找。

(3)如果找不到专辑,则返回 HTTP 404错误。

b.最后,更改您的main,使其包含对router.GET的新调用,路径现在为/albums/:id ,如以下示例所示。

在此代码中:

(1)将/albums/:id路径与getAlbumByID功能相关联。在 Gin 中,路径中项目前面的冒号表示该项目是路径参数。

a.如果服务器从上一节开始仍在运行,请停止它。

b.在包含 main.go 的目录中的命令行中,运行代码以启动服务器。

c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求。

该命令应显示您使用其 ID 的专辑的 JSON。如果找不到专辑,您将收到带有错误消息的 JSON。

恭喜!您刚刚使用 Go 和 Gin 编写了一个简单的 RESTful Web 服务。

本节包含您使用本教程构建的应用程序的代码。

作为一个测试,作为一个测试开发, 全栈化+管理 是我们未来的发展方向。已经掌握了Java、Python、HTML的你,是不是也想了解下最近异常火爆的Go语言呢?来吧,让我们一起了解下。

Go 是一个开源的编程语言 ,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。这三个人都是计算机界的大神,有的参与了C语言的编写,有的还是数学大神,有的还获得了计算机最高荣誉-图灵奖。

接下来说说 Go语言的特色 :

简洁、快速、安全

并行、有趣、开源

内存管理、数组安全、编译迅速

Go语言的用途 :

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于 游戏 服务端的开发而言是再好不过了。

Go语言的环境安装:

建议直接打开 https://golang.google.cn/dl/ 官方地址因为墙的原因打不开

因为我用的是windows系统,这里主要讲下Windows系统上使用Go语言来编程。

Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.17.2.windows-amd64.msi)的安装包来安装。

默认情况下 .msi 文件会安装在 c:Go 目录下。你可以将 c:Gobin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。个人建议还是安装到 Program Files文件夹中。

使用什么开发工具来对Go语言进行编写:

个人建议用VS code, 也可以用Sublime Text来编辑。如果你之前看了我讲的HTML语言的学习,肯定已经下载了VS code. 那么这时你需要在VS code中下载Go语言的扩展插件。

这里有一个巨大的坑,就是在下载Go的插件和依赖包时,会提示一些包没有。主要是因为下载的依赖包部分被墙了,只能想别的办法去下载。

建议参考网页:

https://blog.csdn.net/qq_40876767/article/details/105658433

解决vscode中golang插件安装失败方法

在学习go的过程中,使用的是vscode,但是一直提示安装相关插件失败,然后上网查方法,基本上是叫你建立golang.org目录什么的,结果全是错的,而且都是抄袭,很烦。无意之中看到一位博主分享的方法,他也是饱受上述的垃圾博文困扰,然后找到了解决方法,这里向他致敬,秉着让更多人看到正确解决方法的心,我写下正确的解决方法,希望对你有所帮助,也可以点开原博主链接参考:https://www.cnblogs.com/xll970105/p/11906899.html

Go有一个全球模块代理,设置代理再去安装golang的插件,就可以安装成功了。步骤有,首先Windows用户打开Powershell,一个蓝色的界面,注意不是cmd!不知道的直接打开window下面的搜索,然后输入powershell,搜索出来就可以了。

$env:GO111MODULE=“on”

$env:GOPROXY=“https://goproxy.io”

go env -w GOPROXY=https://goproxy.io,direct

go env -w GOPRIVATE=*.corp.example.com

然后我们打开VsCode界面,下面会提示安装插件,我们选择Install ALL,就会安装成功

当你在运行Go语言程序时,提示所有的插件包都已经安装成功了时,就可以正常使用了,要不然一堆报错会让你非常心烦。

好了,今天先到这里,晚安、下班~

当前位置: Language Tips>Columnist 专栏作家>津津乐道

万能动词“GET”的主要用法

中国日报网 2016-10-12 11:27

分享到

英语中,“GET”作动词时,它不仅内涵非常丰富,而且其用法颇为复杂。它是一个万能动词,备受英语人士青睐。关于GET的使用频率和语体风格,英国著名词汇专家皮尔索尔(J. Pearsall)女士在1998年出版的《新牛津英语词典》中特地指出:GET是五个最常用的英语动词之一,但它常用于非正式的口语或书面语中。为了叙述方便,下面从词性功能的角度,简要归纳一下GET的语义及语用特点,以便英语学习者能正确掌握这一万能动词的主要用法。

一、及物动词

及物动词get的用法很多,但在每种搭配中get的意义是不完全相同的。

1.用于get+sb(sth);意为“叫来某人(得到某物)”。例如:

Please go and get him. [请你去把他叫来。]

She got high marks in the final examination. [她在期末考试中得了高分。]

2.用于get+sb+sth/get+sth+for sb;意为“为某人弄到某物”。例如:

I'll get you a drink. [我去个你拿杯饮料来。]

Could you get a school timetable for me? [你能帮我弄张课程表吗?]

3.用于“get+名词+宾补”,该宾语补足语可以是:

1)不定式;意为“使……做……”(具有使役性)。例如:

You must get them to come here. [你必须让他们来这里。]

He couldn't get the car to start and went by bus. [他因无法发动车子,所以就乘公共汽车去。]

2)现在分词;意为“使……(开始)起来”或处于某种状态。例如:

What he said got us thinking. [他说话使我们思考起来。]

Can you get the machine running? [你能把这机器发动起来吗? ]

3)过去分词;其中的过去分词表示被动关系。例如:

We get our milk delivered. [我们订的牛奶送到了。]

You must get the work done by Friday. [你必须最迟在星期五以前把工作做完。]

值得注意的是,这种被动关系有时可能表示某种遭遇;这主要取决于过去分词的含义。例如:

He got his watch stolen. [他的手表被偷了。]

Ina got her fingers caught in the door. [艾娜的手指让门给夹住了。]

另外,“get sth done”和“have sth done”在语义及语用上都有区别;前者通常表示动作让别人完成,后者通常表示动作由自己完成。例如:

She got her hair cut yesterday. [她昨天剪了头发(别人剪的)。]

A week ago I had a hundred dollars saved. [一个星期前我节省了一百美元(自己省的)。]

4)形容词;意为“使……(变成某种状态)”。例如:

What he said got us angry. [他说的话让我们很生气。]

We've got everything ready. [我们已把一切都准备好了。]

二、不及物动词

不及物动词get的用法也很多,不同的搭配有不同的意义。

1.用于“get+形容词”;get相当于系动词,构成系表结构说明主语的状况、性质、特征等情况。例如:

She got sick. [她生病了。]

Please don't get angry. [请不要生气。]

值得一提的是,英国著名语法专家斯旺(M. Swan)先生在1980年出版的专著《实用英语惯用法》中指出:get不能与表示颜色的形容词构成系表结构。例如不说:

* Leaves get brown.

但可以把get改为go:Leaves go brown.[树叶变棕色。]

另外,get用进行时态来表示状态的改变。例如:

The weather is getting cold. [天气逐渐变冷。]

I'm getting very deaf, you know. [你知道,我的耳朵越来越聋了。]

用进行时态的get还可以与形容词的比较级连用,强调渐进过程。例如:

The things are getting worse. [事情变更糟了。]

Our life is getting better and better. [我们的生活是越来越好了。]

2.用于“get+副词”,表示位置的变换;其中一些已成为成语。例如:

Where did you get on? [你上哪儿去了?]

The news soon got abroad. [这消息很快就传开了。]

3.用于“get+不定式”(构成复合谓语),表示一种状态的变化。例如:

How did you get to be captain? [你怎么当上队长的?]

I'll never get to understand him. [我永远不会理解他。]

4.用于“get+现在分词”;这种用法主要见于美国英语。例如:

We'd better get going, I suppose. [我想我们最好赶紧动身。]

They got talking and didn't notice the time. [他们谈了起来并没有注意时间。]

5.用于“get+过去分词”;这时get表示的是相当于become(即系动词)的意思,后面的过去分词属形容词范畴(即形容词化的过去分词),作主语补语。例如:

He got very worried. [他变得很担心。]

She gets easily excited. [她很容易激动。]

三、助动词

get作为助动词,它与过去分词构成被动语态(即Get-Passive)。中国著名语言学家周海中先生在1990年发表的论文《Get-Passive研究》中指出:目前,Get-Passive的使用还没有Be-Passive那么广泛,一般限于口语和非正式书面语;然而,这一被动语态却有着用得愈来愈多的趋势,这种语言现象很值得我们重视和研究。

Get-Passive除了在形式和语体上与Be-Passive有区别外,在语义及语用上也有其特点。美国著名语言学家伯恩斯坦(T. Bernstein)先生在1981年出版的专著《注意你的语言》中认为:当强调状态时,最好使用Be-Passive;当强调动作时,最好使用Get-Passive。他给了一个颇有趣的例句:She has been married, so often you might think she enjoys just getting married, not being married.

Get-Passive明确地表示做出动作的时间,而Be-Passive则表示动作造成的状态的持续时限。例如:

At that time he was not yet married, but he got married in 1920. [当时他还没有结婚,但他在1920年结婚了。]

因为Get-Passive具有这一语义特点,所以以下一句不能成立:

* He got married a long time.

但我们可以说:He was married a long time. [他结婚很长时间了。]

就感情色彩而言, Get-Passive一般都有不利、不幸、不愉快或不如意的意义色彩;而Be-Passive可以表示褒义、贬义或中性意义。例如:

John got arrested by the police. [约翰被警察逮捕了。]

Mariah got dismissed from the service. [玛丽亚被解雇了。]

某些动词用于Get-Passive时,虽然在形式上是被动的,但在意义上却是主动的。例如:

We got started at noon. = We started at noon. [我们中午开始。]

Good-bye and write me as soon as you get settled. = Good-bye and write me as soon as you settle. [再见,你安顿下来后尽快给我写信。]

这类动词还有confuse[迷惑]、divorce[离婚]、dress[穿着]、engage[订婚]、lost[迷路]、marry[结婚]、wash[洗净]等。

最后一提的是,由动词get构成的成语,如get hell[受严厉处罚]、get hot[恼怒,生气]、get nowhere[无效,徒劳]、get out[出去,离开]、get rid of[摆脱,除去]、get through with[做完,办完]等就有近百条。这些成语既有字面意义,又有引申意义或比喻意义。它们是英语宝库中的明珠,其用法同样值得学习者掌握。

本文仅代表作者本人观点,与本网立场无关。欢迎大家讨论学术问题,尊重他人,禁止人身攻击和发布一切违反国家现行法律法规的内容。

(本文作者为英国牛津大学访问学者 林娜博士)

上一篇 : 《Madam Secretary》中的经典口语句型

下一篇 : 安全:到底是safety,还是security?

分享到

中国日报网英语点津版权说明:凡注明来源为“中国日报网英语点津:XXX(署名)”的原创作品,除与中国日报网签署英语点津内容授权协议的网站外,其他任何网站或单位未经允许不得非法盗链、转载和使用,违者必究。如需使用,请与010-84883561联系;凡本网注明“来源:XXX(非英语点津)”的作品,均转载自其它媒体,目的在于传播更多信息,其他媒体如需转载,请与稿件来源方联系,如产生任何问题与本网无关;本网所发布的歌曲、电影片段,版权归原作者所有,仅供学习与研究,如果侵权,请提供版权证明,以便尽快删除。

你可能还感兴趣的文章

川普推特撕X闯祸 美民众:你还是关了吧

《星球大战》粉丝要求把莱娅公主正式列入迪士尼公主

《单身日记3:好孕来袭》电影精讲(视频)

关于《神夏》你不知道的十件事