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

news2025/1/12 12:10:30

在这里插入图片描述

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

在这里插入图片描述

文章目录

  • 一、什么是Web
  • 二、RESTful架构
    • 2.1:RESTful介绍
    • 2.2:RESTful API
      • 2.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 API

2.2.1:什么是API?

 API的全称是:Application Programming Interface,是一种软件接口(注意,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设计和开发和规范

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

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

    • GET:获取资源
    • POST:创建资源
    • PUT:更新资源
    • DELETE:删除资源
  3. 数据格式:RESTful API使用标准的数据格式来表示请求和响应数据,如:JSON、XML等。且请求和响应的数据格式应该统一,方便客户端的处理和解析‘

  4. 状态码: RESTful API使用标准的HTTP状态码来表示请求和处理结果。常用的状态码包括200 OK201 Created400 Bad Request401 Unauthorized403 Forbidden404 Not Found500 Internal Server Error等。客户端可以根据状态码来判断请求是否成功,并根据不同的状态码进行相应的处理。

  5. 超媒体: 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 main

import "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:8080
	r.Run()
}


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

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


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

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

在这里插入图片描述

  • Java岛冒险记【从小白到大佬之路】
  • LeetCode每日一题–进击大厂
  • 算法
  • C/C++
  • Go语言核心编程
  • 数据结构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YonLinker连接集成平台构建新一代产业互联根基

近日,由用友公司主办的“2023用友BIP技术大会“在用友产业园(北京)盛大召开,用友介绍了更懂企业业务的用友BIP-iuap平台,并发布了全面数智化能力体系,助力企业升级数智化底座,加强加速数智化推进…

入门机器学习,华盛顿大学4个案例分享

机器学习是一门从数据中研究算法的多领域交叉学科,研究计算机如何模拟或实现人类的学习行为。现在,我们可以看到很多机器学习的实际应用,例如语音搜索技术、图像识别、自动翻译、自动驾驶汽车等。机器学习已经成为许多行业的焦点,…

【学习笔记】GeoServer——使用Java发布图层(SHP文件和DB数据库),附自用工具类

文章目录 SHP文件发布逻辑 1、获取到geoserver的manager对象2、调用createWorkArea方法,参入manager,创建空间空间 workArea3、调用createShpDataPool方法,创建数据存储4、发布样式Style.5、发布图层 调用业务层库发布shp文件图层业务逻辑如下…

Ambari 2.7.5+HDP3.1.5离线扩容不同配置组

确保ambari server节点启动,Httpd 服务安装并启动,可参考: Ambari 2.7.5HDP3.1.5离线安装详细教程(附安装包)https://blog.csdn.net/QYmufeng/article/details/122827261 1.安装ambari agent 在需要添加的主机上安装…

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记 🥸 下述代码均在煮皮特上运行喔 LLMs(large language models) Base LLM:基于文本训练数据来预测做“文字接龙” Instruction Tuned LLM(指令调整型LLM):接受了遵循指示的培训&am…

SpringBoot 集成 RocketMQ

项目地址 前面我们介绍了怎么使用 docker 安装 rocketMQ&#xff0c;现在我们就来试试使用 SpringBoot 集成之后&#xff0c;怎么发送消息和消费消息。 集成步骤 工程结构 第一步&#xff1a;引入相关依赖 <dependency><groupId>org.projectlombok</groupId…

【新星计划-2023】什么是OSI七层模型?一文带你了解

一、什么是OSI七层模型 OSI七层模型又叫做“OSI参考模型”&#xff0c;它的全称为“开放系统互连参考模型”&#xff0c;它是一个七层的、抽象的模型体&#xff0c;不仅包括一系列抽象的术语或概念&#xff0c;也包括具体的协议。那么为什么会出现OSI参考模型&#xff1f; 原…

第 6 章 整合 Phoenix

6.1 Phoenix 简介 6.1.1 Phoenix 定义 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表&#xff0c;插入数据和查询 HBase 数据。 6.1.2 为什么使用 Phoenix 官方给的解释为&#xff1a;在 Client 和 HBase 之间放一个 Phoenix 中…

WatchGuard 防火墙策略、配置和日志分析器

获取 Internet 活动见解并及时了解安全事件是一项具有挑战性的任务&#xff0c;因为安全设备会生成大量的安全和流量日志。Firewall Analyzer 针对 WatchGuard 防火墙设备的报告功能具有一系列功能&#xff0c;使您能够增强网络安全。WatchGuard 日志分析器软件&#xff0c;可让…

【推荐】网络安全10本入门必看书籍

前言 对于初学者来说&#xff0c;了解网络安全的入门知识是非常重要的。以下是我推荐的10本入门网络安全必看的书籍 1.《黑客攻防技术宝典》 作者&#xff1a;余洪涛&#xff0c;出版社&#xff1a;清华大学出版社 这本书是网络安全初学者入门的好选择。书中讲解了黑客攻击和…

尚硅谷大数据技术Spark教程-笔记06【SparkCore(案例实操,电商网站)】

视频地址&#xff1a;尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【SparkCore&#xff08;概述、快速上手、运行环境、运行架构&#xff09;】尚硅谷大数据技术Spark教程-笔记02【SparkCore&#xff08;核心编程&#xff0c;RDD-核…

速看,关于Python的17个学习网站,从基础到机器学习【建议收藏】

目录 一、基础学习网站Python官方教程Python官方安装包地址PyCharm下载地址anaconda3清华开源下载地址 二、爬虫学习网站requests官方学习网站BeautifulSoup文档网站selenium官方学习网站scrapy中文学习网站 三、数据分析学习网站numpy官方文档网站pandas官方文档网站sklearn官…

Spring-Rest- url 请求风格和SpringMVC 映射请求数据

目录 Rest- url 请求风格 Rest-基本介绍 ● 说明 实例 说明&#xff1a; ● REST 的核心过滤器 代码说明Rest 风格的 url-完成增删改 需求说明 ​编辑修改 web.xml 添加 HiddenHttpMethodFilter 修改 springDispatcherServlet-servlet.xml 作用 创建rest.jsp 解读…

大数据技术之Kettle

目录 第1章 Kettle概述 1.1 ETL简介 1.2 Kettle简介1.2.1 Kettle是什么 1.2.2 Kettle的两种设计 1.2.3 Kettle的核心组件 1.2.4 Kettle特点 第2章 Kettle安装部署 2.1 Kettle下载 2.1.1 下载地址 2.1.2 Kettle目录说明 2.1.3 Kettle文件说明 2.2 Kettle安装部署 2…

openai账号创建教程-openai注册问题大全

openai注册页面打不开 遇到openai注册页面打不开&#xff0c;可以用以下解决方法&#xff1a; 检查网络连接。如果您的网络连接不稳定或者有问题&#xff0c;可能会导致访问网站异常。请尝试使用其他设备或连接其他网络&#xff0c;看是否能够打开OpenAI注册页面。 清除浏览器…

为什么需要使用Docker

简介与概述 1.介绍 Docker是一个开源的应用容器引擎&#xff0c;基于Go语言开发的&#xff0c;并且遵从Apache2.0协议开源。 Docker可以让开发者打包他们的应用以及依赖&#xff0c;打包到轻量级、可移植的容器中&#xff0c;然后发布到任何一个流行的Linux服务器上&#xff…

新库上线 | CnOpenData中国标准数据

中国标准数据 一、数据简介 按照《中华人民共和国标准化法》的定义&#xff0c;标准是指农业、工业、服务业以及社会事业等领域需要统一的技术要求。标准作为一种通用性的规范语言&#xff0c;在合理利用国家资源、保障产品质量、提高市场信任度、促进商品流通、维护公平竞争、…

使用JPA自动生成代码(轻松上手看了就会版)

目录 背景&#xff1a;方案概念&#xff1a;JPA 的主要作用 jpa简单使用&#xff08;Springboot项目&#xff09;jpa进阶使用总结 背景&#xff1a; 项目需要自动生成sql代码&#xff0c;不需要写sql语句&#xff0c;能够自动进行查询&#xff0c;我想到了JPA。 方案 概念&a…

Jetpack Compose 不止是一个UI框架~

Jetpack Compose是用于构建原生Android UI的现代工具包。 Jetpack Compose使用更少的代码&#xff0c;强大的工具和直观的Kotlin API&#xff0c;简化并加速了Android上的UI开发。这是Android Developers 官网对它的描述。 本文不是教你Jetpack Compose 的一些基本使用方法&am…

【通过xib自定义Cell Objective-C语言】

一、我们怎么样来自定义单元格呢, 1.我们先来分析一下, 我们这里虽然有很多行,但是每一行,长的都是一样的, 这里有一个Label、那里有一个Label, 每一行每一行,长的都是一样的,唯独只有数据不一样吧, 所以说,遇到这种情况,我们就可以考虑用一个xib,描述一个单元…