位置: IT常识 - 正文

【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用(go开发web项目)

编辑:rootadmin
【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

推荐整理分享【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用(go开发web项目),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:go开发web项目,go语言web开发实例,go web开源项目,go web开源项目,go开发web项目,web 开发工具,goweb开发教程,go web开发进阶实战,内容如对您有帮助,希望把文章链接给更多的朋友!

博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。博主主页: @是瑶瑶子啦所属专栏: Go语言核心编程近期目标:写好专栏的每一篇文章

文章目录一、什么是Web二、RESTful架构2.1:RESTful介绍2.2:RESTful API2.2.1:什么是API?2.2.2:RESTful API三、 初始Gin框架3.1:安装和使用一、什么是Web

全称:“万维网”(World Wide Web)

本质:系统(基于互联网).由一系列的超文本文档Hypertext Documents)组成

作用:用户可以通过浏览器/APP,在Web上访问各种网站、资源

原理(重要):

Web的核心技术:

超文本标记语言(HTML等):用于组织和创建Web页面超文本传输协议(HTTP):Web客户端和服务器之间传输数据的协议网页浏览器(Web Browser):用于显示Web页面的软件统一资源定位符(URL):表示Web资源的地址

发展历程

静态Web:由静态页面组成,该系统的内容是静态的、固定的,无法根据用户需求进行更新动态Web:使用服务器端脚本语言(PHP、ASP、JSP)和数据库用于处理用户请求,动态生成页面内容Web2.0:强调用户参与、互动、分享社交

用户生成内容(User-generated content):比如瑶瑶子现在在CSDN上写博客,就是让我这个用户,也成为了Web内容的创造者和分享者社交互动(Social interaction)你在评论区给瑶瑶子评论、或者加入瑶瑶子的社区,我们分享信息、建立联系,这就是用户之间的互动富媒体应用(Rich media applications):在线视频、游戏等二、RESTful架构

💁🏻‍♂️推荐阅读:阮一峰 理解RESTful架构

2.1:RESTful介绍

RESTful(Representational State Transfer,表述性状态转移)是一种软件架构风格,它基于HTTP协议,用于设计和开发网络应用程序。RESTful架构风格强调资源的标识和状态的转移,使得客户端和服务器之间的交互变得简单和可扩展。

资源(Resource): 在RESTful框架中,任何可以被标识和访问的对象都是资源(如网页、图片、视频、数据库记录等)

每一个URI(Uniform Resource Identifier:统一资源定位符)对应一个资源实体 URL(Uniform Resource Locator:统一资源定位器)和 URN(Uniform Resource Name:统一资源名称)都是URI的子集。作用是在互联网上唯一标识资源,便于资源的访问和管理。

URL:由协议名、主机名、路径、查询参数组成。作用:定位资源的具体位置和信息。当我们在浏览器输入一个URL时,浏览器会根据URL信息向服务器发送请求,获取对应资源(网页、图片、视频等)。URN:由命名空间和资源名称组成,和URL不同的是它不包含用于定位资源的具体信息。作用:指定持久性资源的名称,比如数字对象标识符(DOI)、国际标准书号(ISBN)、国际标准音像制品编号(ISRC)等,便于资源的唯一标识和长期管理。

HTTP方法: RESTful架构使用http协议定义了一组方法:来对服务器的资源进行操作

GET:获取资源POST:创建资源PUT:更新资源DELETE:删除资源

表示(Representation)  是客户端(用户)和服务器之间交换数据的一种格式,通常由客户端发送给服务器或者由服务器发送给客户端。Representation可以是任何格式的数据,如:XML、JSON、HTML等  客户端和服务器可以使用不同的表示格式进行交互,只要它们都能够解析和处理这个表示即可。因此,表示的灵活性和可扩展性是RESTful架构的重要特点之一  🏄🏻‍♀️举例:瑶瑶子把她博客的链接(本质就是URL:这篇文章的资源标识符)分享给你,你在浏览器输入这个链接,按回车,就是从客户端向CSDN的服务器发送了一个请求,CSDN的服务器可以将这篇文章的内容以某种格式的表示(HTML)返回给你(客户端),你的浏览器可以解析这个Representation,提取文章内容并进行显示和处理~

状态转移(State Transfer)  是客户端和服务器之间通过http方法和表示,来实现状态的转移。这个状态,指的是资源的状态,可以是任何属性或者信息。  🏄🏻‍♀️举例:瑶瑶子又要肝博客啦!于是瑶瑶子在CSDN的客户端给CSDN的服务器发送了一个http的post请求,请求的URI指向博客文章资源的集合。请求中包含新文章的表示(representation),表示中包含:文章标题、内容等信息。这个适合服务器根据我的请求,创建了一个新的文章,并且返回了http响应,响应中包含了新文章的URI和状态码。这个过程,客户端和服务器就实现了状态转移的过程,从原来:没有新文章的状态,通过Http 的post请求和表示,客户端和服务器之间转移到了新的状态:瑶瑶子的主页内多了一篇新博客!

2.2:RESTful API2.2.1:什么是API?

 API的全称是:Application Programming Interface,是一种软件接口(注意,Web本质其实也是一个软件),用于定义软件组件(或者叫作软件模块)之间的通信协议。

【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用(go开发web项目)

 当不同的软件模块进行相互通信时,它们之间需要一种规范化的方式来传递数据和指令,也就是需要一个双方都认同的通信协议(这样,双方才知道你说了啥,给了我啥,我要做出上面反应)。

 API就是定义这种规范的方式,它来规定不同软件组件之间如何进行通信、传递数据。且客户端和服务端都需要遵守API的定义的规范,才能正确地进行数据和指令的传递。

 通过使用API,开发人员可以根据API的规范,使用API,轻松的访问和使用不同软件组件的功能,无需了解其内部实现细节。

分类

Web API:通过网络进行通信的API,使用http协议+表示(representation)进行数据交换,包括:RESTful API和SOAP API等程序库API:访问和使用特定编程语言的或框架中的函数和类操作系统API:访问和使用操作系统中的函数和类第三方API:由第三方开发者提供的API,用于访问和使用其服务或者平台2.2.2:RESTful API

RESTful API是基于RESTful架构风格(上面已讲)的Web API。是通过http协议和表示来实现的API设计模式。

RESTful API的核心就是客户端和Web服务器进行交互的适合,使用http协议中的四个请求方法,代表对资源的不同操作

GET:获取资源POST:创建资源PUT:更新资源DELETE:删除资源

只要API程序都遵循了REST风格,那么就将其称为RESTful API.

RESRful API设计和开发和规范

资源和URL:资源是指应用程序中的实体或者对象,每一个资源有唯一的URL地址,可以通过http方法对其进行操作。客户端可以通过URL地址,对资源进行CRUD。URL需要简洁、有意义,使用名词进行资源描述(因为动作已经由get\ post等这些方法确定了

http方法:RESTful API使用http协议中不同的方法来表示不同的操作,实现对资源的CRUD

GET:获取资源POST:创建资源PUT:更新资源DELETE:删除资源

数据格式:RESTful API使用标准的数据格式来表示请求和响应数据,如:JSON、XML等。且请求和响应的数据格式应该统一,方便客户端的处理和解析‘

状态码: RESTful API使用标准的HTTP状态码来表示请求和处理结果。常用的状态码包括200 OK、201 Created、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、500 Internal Server Error等。客户端可以根据状态码来判断请求是否成功,并根据不同的状态码进行相应的处理。

超媒体: RESTful API应该使用超媒体(Hypermedia)来表示资源之间的关系和链接。客户端可以通过超媒体链接轻松地导航和访问不同的资源,从而实现应用程序的动态性和可扩展性。

三、 初始Gin框架

Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架

Gin框架支持开发RESTful API

3.1:安装和使用下载安装go get -u github.com/gin-gonic/gin将gin引入到当前包,以使用gin框架import "github.com/gin-gonic/gin"gin使用快速入门package mainimport "github.com/gin-gonic/gin"func main() {//创建一个默认的路由引擎(引导别人访问什么地址。执行什么函数)r := gin.Default()//指定用户使用GET请求访问/hello时,执行sayHello这个函数r.GET("/hello", func(c *gin.Context) {//c.JSON,返回JSON格式数据c.JSON(200, gin.H{"message": "yyz",})})//启动http服务,默认在0.0.0.0:8080r.Run()}

路由(Routing)是指根据URL请求路径(或者请求参数)来确定应用程序中相应的代码执行路径的过程。在Web开发中,路由通常指将HTTP请求的URL路径与应用程序中的相应处理函数进行绑定,以便在收到请求时能够正确地路由请求到相应的处理函数中。

Web应用程序中的路由通常由路由引擎来管理,路由引擎根据URL路径(或者请求参数)来匹配相应的处理函数,并将HTTP请求转发到相应的处理函数中。

欢迎在评论区交流和留下你的想法和建议

如果对你有用,还请:💭评论+👍🏻点赞+⭐收藏+➕关注

Java岛冒险记【从小白到大佬之路】 LeetCode每日一题–进击大厂算法C/C++Go语言核心编程数据结构
本文链接地址:https://www.jiuchutong.com/zhishi/298397.html 转载请保留说明!

上一篇:JavaWeb 项目 --- 表白墙 和 在线相册(javaweb项目开发流程)

下一篇:VUE3.2 + vue-echarts + DataV 数据可视化大屏(项目)

  • 版式设计网页设计企业网站测试企业网站的设计和功能搭建完成

    版式设计网页设计企业网站测试企业网站的设计和功能搭建完成

  • 明星大侦探(mx3拆机)(明星大侦探第五季)

    明星大侦探(mx3拆机)(明星大侦探第五季)

  • 小米11支持NFC吗(小米11支持nfc3.0)

    小米11支持NFC吗(小米11支持nfc3.0)

  • 新买的华为nova4e不能发信息(新买的华为Nova 8手机老是自动重启)

    新买的华为nova4e不能发信息(新买的华为Nova 8手机老是自动重启)

  • 抖音怎么看主播的本场音浪(抖音怎么看主播的榜一大哥)

    抖音怎么看主播的本场音浪(抖音怎么看主播的榜一大哥)

  • 打印机驱动抽取文件后无反应(打印机驱动抽取失败)

    打印机驱动抽取文件后无反应(打印机驱动抽取失败)

  • 闲鱼属性出错(闲鱼设置商品属性)

    闲鱼属性出错(闲鱼设置商品属性)

  • 小米蓝牙耳机airdots青春版怎么双耳使用(小米蓝牙耳机air2 se只有一边有声音)

    小米蓝牙耳机airdots青春版怎么双耳使用(小米蓝牙耳机air2 se只有一边有声音)

  • 快手名总是已经注册怎么办(快手名字老是重复怎么办)

    快手名总是已经注册怎么办(快手名字老是重复怎么办)

  • data文件可以删除吗(data数据能删除吗)

    data文件可以删除吗(data数据能删除吗)

  • 表格撤回快捷键(表格中撤回键怎么恢复)

    表格撤回快捷键(表格中撤回键怎么恢复)

  • 物联网与互联网的区别是什么(物联网与互联网的关系)

    物联网与互联网的区别是什么(物联网与互联网的关系)

  • mtk6765是什么处理器(mtk mt6765处理器好吗)

    mtk6765是什么处理器(mtk mt6765处理器好吗)

  • 微信相册打不开怎么回事(微信相册打不开是黑的)

    微信相册打不开怎么回事(微信相册打不开是黑的)

  • 手机上面一排孔是什么(手机上面一排孔掉了)

    手机上面一排孔是什么(手机上面一排孔掉了)

  • oppor15处理器是什么(oppor 15的处理器)

    oppor15处理器是什么(oppor 15的处理器)

  • vivo哪款手机支持nfc功能(vivo哪款手机支持nfc)

    vivo哪款手机支持nfc功能(vivo哪款手机支持nfc)

  • 爱剪辑电脑版怎么用(爱剪辑电脑版怎么弄画中画)

    爱剪辑电脑版怎么用(爱剪辑电脑版怎么弄画中画)

  • 手机qq管理员怎么改群名片(手机qq管理员怎么禁言)

    手机qq管理员怎么改群名片(手机qq管理员怎么禁言)

  • qq音乐可以单曲购买吗(qq音乐可以单曲循环吗)

    qq音乐可以单曲购买吗(qq音乐可以单曲循环吗)

  • sp和ssp是什么意思(sp和ssp的区别)

    sp和ssp是什么意思(sp和ssp的区别)

  • 美团众包如何切换城市(美团众包如何切换地图)

    美团众包如何切换城市(美团众包如何切换地图)

  • 微信怎么发状态(微信怎么发状态 不发图)

    微信怎么发状态(微信怎么发状态 不发图)

  • 手机用电快怎样恢复(手机用电快怎样恢复vivo)

    手机用电快怎样恢复(手机用电快怎样恢复vivo)

  • macOS 11.0.1(20B29)更新了什么?macOS Big Sur 11.0.1(20B29)更新详解

    macOS 11.0.1(20B29)更新了什么?macOS Big Sur 11.0.1(20B29)更新详解

  • 给深度学习研究生的入门建议(未完待续ing)

    给深度学习研究生的入门建议(未完待续ing)

  • 金税盘地区编号查询
  • 固定资产直接计入成本的规定
  • 车船税放在哪个科目核算
  • 没有认证的增值税专用发票怎么做账
  • 出口货物补税申报表
  • 企业可以不弥补以前年度亏损吗
  • 红字发票的蓝字发票要退回吗
  • 地税按季报还是月报
  • 酒类消费税征收环节归纳
  • 外经证是先开票还是先预缴税款
  • 文化传媒公司的经营模式怎么写
  • 出口退税申报显示疑点跳过可以转正式申报吗
  • 营改增的作用
  • 红字专用发票信息表需要盖章吗
  • 交通卡定额发票购买
  • 国有资产无偿划转实施方案
  • 公允价值变动损益转入其他业务成本
  • 印花税资金账簿减免税优惠政策2021
  • 汇算清缴之前找回来成本发票可以吗
  • 收回税款 会计分录
  • 享受免税的企业每月直接零申报吗
  • 利润表中的减是什么意思
  • 插上U盘电脑无法启动怎么回事
  • 尚未支付的货款属于什么会计要素
  • 小企业会计准则没有以前年度损益调整科目
  • 司机公里补助用不用交个税
  • 应纳消费税包不包括代收代缴
  • linux中的应用程序主要保存在哪些目录中
  • 耕地占用补贴标准
  • 汇算清缴后补缴企业所得税账务处理
  • 已认证进项税发票可抵扣么
  • php获取文件名
  • 核定征收的小规模纳税人要做账吗
  • 薏米红豆粥的做法视频
  • citespace分析derwent
  • 金税盘锁死会电子发票也开不了吗
  • laravel orm使用
  • 新版python
  • vscode前端必备扩展
  • 报销单跨月怎么记账
  • 小规模纳税人印花税减半征收政策
  • phpcms建站流程
  • calc下载
  • 预缴税款从哪里查
  • 游戏公司的主营业务是什么
  • 出纳记账凭证怎么写
  • jdbc描述
  • 增值税差异调整
  • Windows7下Microsoft SQL Server 2008安装图解和注意事项
  • 实收资本印花税属于什么税目
  • 财政补贴的会计分录
  • 坏账损失的会计核算方法
  • 其他应付款可以转主营业务收入吗
  • 检测费账务处理
  • 其他收益结转到什么科目
  • 转贴现占谁的授信
  • 购买原材料产生的运费计入什么科目
  • 公司闲置房屋出租合法吗
  • 工程款预缴税
  • 行权期行权条件成就什么意思
  • 该卡已在其他账户中存在什么意思
  • win2003无法启动
  • Windows Server 2008搭建终端服务器
  • mac设置启动系统
  • windowssys
  • win8 防火墙
  • windows8怎么更新到最新版本
  • winxp系统怎么安装
  • win8.1进不了系统
  • 苹果Mac OS X通知中心提示音怎么修改 OS X通知中心提示音更换方法图解
  • 铁嘴银牙剧情简介
  • bootstrap treeview 扩展addNode方法动态添加子节点的方法
  • cocos2dx3.3 便条提示语功能简单实现
  • Activity的四种启动模式和onNewIntent()
  • 定时软件有哪些
  • 怎样设置安卓等比例显示按钮
  • 安卓回调接口怎么写
  • 四川省一般纳税人资格证明
  • 税控盘如何分配发票
  • 税务稽查审理的基本原则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设