ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Golang笔记-Typora1

2021-07-25 18:01:43  阅读:171  来源: 互联网

标签:book GET 笔记 Golang Typora1 sayHello gin POST hello


Golang - Gin框架

Gin是一个用 Go语言编写的 web框架。它是一个类似于 martini 但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin

一、创建工程

我们使用 Goland来完成 Gin框架的实例

image-20210724171705193

创建工程时注意上图箭头标记的地方

  1. 选择go modules
  2. 在environment中添加proxy为 https://goproxy.cn

image-20210724172312406

  • go.mod文件用于保存该工程的依赖信息(引用了xx库...)

二、第一 个Gin 实例

(1)导入 gin 库

import "github.com/gin-gonic/gin"

(2)创建一个路由引擎对象

r := gin.Default()

(3)GET方法

实例化后的路由引擎对象 r 有GET、POST等方法。其中GET方法表示仅当浏览器以GET方式访问relativePath时才作出反应

r.GET("/hello", sayHello)

代码解析:

GET方法共有两个参数,第一个为relativePath,表示当浏览器以GET访问xxx/hello时会...;第二个为function,表示当浏览器访问relativePath时将执行这个函数

(4)GET - 执行函数

func sayHello(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"hello world!",
	})
}

代码解析:

  1. 执行函数必须要有 gin.Context 类型的参数 c
  2. c.Json函数功能:JSON serializes the given struct as JSON into the response body 此函数把给定的结构体类型转换为json格式并返回!一定注意此函数直接返回了第二个参数
  3. 状态码200:表示status OK,即能够成功交互
  4. 补充说明 —— 关于目前的前后端交互

之前的web编程:当收到请求时,后端将整个html文件(本质上是二进制文本)通过html协议传送到前端

现在的web编程:当收到请求时,后端仅仅用html协议传送数据(血肉);网站的框架样式(骨架)则通过其他方式传送

(5)RESTful API:一种风格

简单来说,REST的含义就是客户端与Web服务器之间进行交互的时候,使用 HTTP协议中的 4个请求方法代表不同的动作。

  • GET用来获取资源
  • POST用来新建资源
  • PUT用来更新资源
  • DELETE用来删除资源。

只要API程序遵循了 REST风格,那就可以称其为 RESTful API。目前在前后端分离的架构中,前后端基本都是通过 RESTful API来进行交互。

  1. 不采用restful api

只分 GET 与 POST 请求,通过多个页面来区分不同功能

请求方法 URL 含义
GET /book 查询书籍信息
POST /create_book 创建书籍记录
POST /update_book 更新书籍信息
POST /delete_book 删除书籍信息

例如通过relativePath来实现创建、更新、删除等功能

  1. 采用restful api
请求方法 URL 含义
GET /book 查询书籍信息
POST /book 创建书籍记录
PUT /book 更新书籍信息
DELETE /book 删除书籍信息

在后端中就按照 GET、POST、PUT、DELETE这四种功能来定义四种方法

这就使得我们可以通过不同的方法来访问同一个relativePath来达到不同的效果

  • Gin框架支持 restful api 的开发
	r.GET("/hello", sayHello)
	r.POST("/hello", sayHello)
	r.PUT("/hello", sayHello)
	r.DELETE("/hello", sayHello)

(6)运行 - r.Run( )

package main

import "github.com/gin-gonic/gin"

func sayHello(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"hello world!",
	})
}

func main() {
	r := gin.Default()

	r.GET("/hello", sayHello)

	r.Run()
}

效果:

image-20210724183421313

(7)restful api实现

package main

import "github.com/gin-gonic/gin"

func sayHello_get(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is get method...",
	})
}

func sayHello_post(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is post method...",
	})
}

func sayHello_put(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is put method...",
	})
}

func sayHello_delete(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is delete method...",
	})
}

func main() {
	r := gin.Default()

	r.GET("/hello", sayHello_get)
	r.POST("/hello", sayHello_post)
	r.PUT("/hello", sayHello_put)
	r.DELETE("/hello", sayHello_delete)

	r.Run()
}

这里利用postman进行验证:

  1. getimage-20210724185144214

  2. postimage-20210724185206901

put与delete类似,不一一列举...

三、Gin渲染

(1)html渲染

标签:book,GET,笔记,Golang,Typora1,sayHello,gin,POST,hello
来源: https://www.cnblogs.com/vosoland/p/15058455.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有