当前位置: 首页 > news >正文

微信推广网站建设媒介平台

微信推广网站建设,媒介平台,网站建设程序策划书,施工企业法定条件环境#xff1a; MAC M1#xff0c;Go 1.17.2#xff0c;GoLand 默认执行指令的终端#xff0c;如果没有特别说明#xff0c;指的都是goland-Terminal 创建项目 Goland中新建项目#xff0c;在$GOPATH/src/目录下建立t_gin项目。 进入项目#xff0c;在goland的T…环境 MAC M1Go 1.17.2GoLand 默认执行指令的终端如果没有特别说明指的都是goland-Terminal 创建项目 Goland中新建项目在$GOPATH/src/目录下建立t_gin项目。 进入项目在goland的Terminal终端下默认pwd是项目所在目录执行指令下载gin go get -u github.com/gin-gonic/gin很快就会安装好。 然后在t_gin下建立一个新的go文件main.go用来作为项目的入口文件。 GET与POST请求参数处理 在main.go中开始编写代码框架的话就先从接收参数开始。 package t_ginimport (github.com/gin-gonic/ginnet/http )func main() {r : gin.Default()//Get 参数r.GET(/getTest, func(c *gin.Context) {name : c.Query(name)c.JSON(http.StatusOK, gin.H{code: 0,data: name,})})//Post 参数r.POST(/postTest, func(c *gin.Context) {name : c.PostForm(name)bankNoArr : c.PostFormArray(bankNo)var ret []stringfor _, bankNo : range bankNoArr {ret append(ret, bankNo)}result : make(map[string]interface{})result[name] nameresult[bankNos] retc.JSON(http.StatusOK, gin.H{code: 0,data: result,})})r.Run() } 好的执行一下看看 $ go run main.go package command-line-arguments is not a main package 没有运行成功报了错误这个错误提示比较浅显是package的问题执行应该是main包我们调整一下代码如下部分 package main然后再运行看看 $ go run main.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in debug mode. Switch to release mode in production.- using env: export GIN_MODErelease- using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET /getTest -- main.main.func1 (3 handlers) [GIN-debug] POST /postTest -- main.main.func2 (3 handlers) [GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value. Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details. [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080好的现在运行成功了由于没有指定端口在r.run()中可以指定端口所以默认使用8080端口启动。 在测试代码里我写了get和post两种请求方式的参数获取这也是日常最常见的请求方式。 我们用postman对这两个接口做一下测试看看参数获取是否正确。 先测试Get get请求的参数能够正确获取。 那我们再测试一下post 很好post请求参数也能够正常接收。 上传文件 在开发过程中经常遇到的请求类型除了Get和Post的接口请求可能就是上传文件的请求了当然上传文件也属于Post请求的一种。 下面我们再来测试一下上传文件的基本实现首先为了存放上传的文件我们在t_gin目录下建立一个新的文件夹upload专门用来存放上传的文件。 测试上传文件的代码如下 r.POST(/upload, func(c *gin.Context) {f, err : c.FormFile(uploadFile)if err ! nil {panic(err.Error())}err c.SaveUploadedFile(f, ./upload/f.Filename)if err ! nil {panic(err.Error())}c.JSON(http.StatusOK, gin.H{code: 0,data: f.Filename,})})还是用postman进行测试 测试是成功的那我们看看t_gin/upload/目录下是不是已经有了上传的文件呢 已经有了对不对符合我们的预期。 上传多个文件 上传文件的操作有些时候可能会一次上传多个文件那这种情况怎么处理呢我们也来尝试一下这种场景。 测试多个文件上传的代码如下 r.POST(/multiUpload, func(c *gin.Context) {multiForm, _ : c.MultipartForm()files : multiForm.File[uploadFile]var result []stringfor _, file : range files {result append(result, file.Filename)err : c.SaveUploadedFile(file, ./upload/file.Filename)if err ! nil {log.Println(file save error: file.Filename)continue}}c.JSON(http.StatusOK, gin.H{code: 0,data: result,})})同样的我们还是将上传的文件放到./t_gin/upload/目录下用postman测试一下看看 好的接口提示是上传成功了我们再看一下upload目录下是不是已经有了上传的文件 确实是有了那多个文件上传的基本操作也成功了。 文件下载 既然说了文件上传那就可能有文件下载我们也来尝试一下文件下载的实现。 测试代码如下 r.GET(/downloadFile, func(c *gin.Context) {//c.File(./upload/cat1.HEIC)c.FileAttachment(./upload/cat1.HEIC, mycat.HEIC)})浏览器试了一下ok。 JSON参数处理 想想还有什么呢。。。。 对了日常的请求中使用最多的应该是json格式的参数再尝试一下json格式的参数处理 测试代码如下 r.POST(/jsonTest, func(c *gin.Context) {type jsonParam struct {Name string json:nameAge int json:ageSex string json:sex}var jsonP jsonParamerr : c.BindJSON(jsonP)if err ! nil {log.Panic(err.Error())}c.JSON(http.StatusOK, gin.H{code: 0,data: jsonP,})})看代码可以发现当参数是json形式时是将json参数bind到了一个struct上。 有没有什么似曾相识的感觉 对就是java和java的参数接收十分相像 ok我们也用Postman测试一下看看 好的没什么问题。 路由分组 还有个不是参数相关的属于路由范畴算是路由分组实际开发中总会遇到不同的模块而模块内的接口前半部分大多情况下是相同的这就属于路由分组了。 我们看下gin中怎么实现的分组通常会有多个路由在一起所以处理方法我们也集中起来放这里我们在t_gin/目录下再建立一个controller文件夹用来存放处理方法。 建好controller文件夹后在其中新建learn.go代码文件代码如下 package controllerimport (github.com/gin-gonic/ginnet/http )type LearnController struct { }func (l *LearnController) First(c *gin.Context) {c.JSON(http.StatusOK, gin.H{code:0,data:this is first handle,}) }func (l *LearnController) Second(c *gin.Context) {c.JSON(http.StatusOK, gin.H{code:0,data:this is second handle,}) }由于是做测试用这里我在方法内部直接做了返回。 好的现在处理方法有了我们来处理路由分组这部分是在main.go当中 rg : r.Group(/learn){learnCtrl : controller.LearnController{}rg.GET(/first, learnCtrl.First)rg.GET(/second, learnCtrl.Second)}同样我们也测试一下看看是否符合我们的预期 ok没什么问题。 常用的基本就这些还有其它的一些偶尔也会用到有需要再去翻文档吧。 今天就到这里。
http://www.hkea.cn/news/14416470/

相关文章:

  • 红安建设局投诉网站桐城做网站的公司
  • 南京中建乡旅建设投资有限公司网站保健品网站建设
  • 学校资源网站的建设方案做水果的有什么网站好
  • 做营销型网站用什么技术佛山专业网站建设公司哪家好
  • 网站运营技术性高吗wordpress在php7.0
  • 沈阳制作网站的公司有哪些班级网站建设的参考文献
  • 企业官方网站系统建设怎么样让网站网址有图标
  • 模块化网站建设2017我们一起做网站
  • 集团网站建设推广网站平台
  • 建设银行网站注销吗如何创新网站建设模式
  • 保定seo网站推广龙岗网站设计案例
  • 深圳易百讯网站建设公司做wap网站能火吗
  • app开发导入网站模板湖南营销类网站设计
  • 文字网站居中erp系统排行榜
  • 公章在线制作网站做不了网站建设教程ppt
  • 只做自己网站wordpress快速建站教程
  • 汽配做的最好的网站大型网站建设兴田德润赞扬
  • 平台门户网站建设方案wap手机
  • 万网网站编辑企业黄页软件
  • 做彩票网站要多大服务器设计上海展会2023
  • 自己做一网站 多做宣传.深圳建设工程交易网官网
  • 图案设计网站推荐大连网站建设方案案例
  • 大学信息化建设 网站群wordpress 主题右边栏
  • 做网站的一些好处网站开发栏目需求1
  • 保险网站建设自建网站经营者例子
  • 如何利用微博推广网站网站创作
  • 网站优化的监测评价网站开发角色分类
  • 免费做网站手机软件网络营销文案实例
  • 网站开发与微信对接wordpress页面html
  • 商城网站策划seo店铺描述例子