首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go web编程第一弹

米娜桑,春节快乐,经过投票,排名第一的是go web编程(说好的12月底更新呢?!),所以第一个系列的分享就将以go web编程开始,使用的开发框架是faygo(一款比较适合用来写rest风格的web开发框架,虽然不是什么知名的大公司开发的,但是使用起来很顺手,同时还默认集成了swagger,所以在这里推荐下),分享的内容将制作一个简单的移动端天气项目,涉及的技术点数据库的操作(基于xorm)、接口的编写、基于vue的前端页面开发以及第三方接口的对接,今天分享的内容是后端开发环境的搭建还有项目的初始化。

faygo github地址:

http://github.com/henrylee2cn/faygo

首先简要的了解下什么是go:

Go语言是谷歌2009发布的第二款开源编程语言。

Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

-- via 百度百科

在整个使用golang编程的过程中,虽然说还是需要写大括号,但是相比起java,不需要写分号,同时有些小括号都可以不用写,所以编写规范上相对优雅,而且golang对于定义了没有使用的变量,或者引入了没有使用的包都当作是错误抛出,一定程度上能够规范代码的质量。最重要的是打包部署相当方便,同一段代码可以打包部署到window和linux(分别是exe和一个二进制文件)。那么接下来我们进入正文,开始分享的内容。

Step 1 安装开发环境

在开始coding之前,必然是需要安装开发环境,安装go也比较简单,需要注意的是GROOT和GPATH两个配置,可以参照官方文档进行安装和配置。(安装成功后,可以使用go version命令查看安装版本以及使用go env查看环境配置)

go version

go env

官方地址:https://golang.org/(某些网络环境下需要科学上网才能访问)

Step 2 安装faygo框架

github地址: https://github.com/henrylee2cn/faygo

参照作者的开发文档,第一步,使用

go get -u -v github.com/henrylee2cn/fay

获取脚手架和faygo框架,等待安装完毕后,便可以初始化我们的天气开发项目,进入到gopath下的src文件夹中创建我们的项目。

安装完毕可以使用fay命令进行项目初始化以及运行项目

使用fay new 项目名创建了一个项目

从上图可以看到,创建完脚本自动在8080端口上运行了我们的项目,访问这个http://localhost:8080如果看到以下界面,那么恭喜你,初始化项目已经成功。访问http://localhost:8080/apidoc还可以查看到对应的swagger接口文档。

Step 3 项目结构简单解析以及开发一个简单的helloworld接口

项目结构(配置文件将会在下一篇文章中着重讲解)

接下来我们书写一个简单的helloworld接口,首先在handler中创建一个helloworld.go的文件,然后创建一个用于接受请求参数的结构体。

创建一个结构体

具体结构体对应的含义,可以参考faygo官方的文档:https://github.com/henrylee2cn/faydoc/blob/master/zh/04.02.md,这里指的是通过query的方式传递了一个user_name参数(由于我们url传参数习惯用下划线的命名方式,这个框架也提供了json注解,在goland编辑器里面,会帮你自动转成下划线的命名)

struct Hanlder 使用结构体标签来定义参数信息。其中参数位置in符合OpenAPI 2.0标准(Swagger2.0)。

接下来创建一个函数类型的handler,页面的处理逻辑都在里面处理,可以类比flask中@route装饰器下的函数,其中HandlerFunc就是我们上面定义的用于接收参数的

然后将这个handler注册到路由中,对应各种注册路由的方法,可以官方文档

https://github.com/henrylee2cn/faydoc/blob/master/zh/05.01.md,我们这里使用树状写法,在route中创建一个路由。

然后保存,可以到swagger中查看当时的接口。

就这么简单的完成了一个接口。建议有兴趣的朋友可以先到github上查看faygo官方的文档,同时也需要对go这本语言本身要有一定的基础,这样能够更好的上手,这一次的教程就到这里,有疑问的朋友或者环境安装上有问题的话可以留言联系我。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190204G0E21400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券