HTTP服务器(一)HTTP服务器入门介绍 - Go语言中文社区

HTTP服务器(一)HTTP服务器入门介绍


一、简介

1.1、做项目的时候,要请求REST服务器。而FEST服务器还是用http基本原理(即阉割版)来请求。

1.2、请求端口EndPoint/请求方法Method/请求内容格式ContentType/请求的数类型PostData(一般为JSon格式)。

1.3、我们熟悉的HTTP、FTP、Telnet等协议都是建立在TCP/IP协议基础上的。

但是,我不知道JSon格式是什么东西,所以先看看HTTP。

二、HTTP介绍

2.1、什么是http?

内容转载https://blog.csdn.net/qinyuanpei/article/details/51757148,部分拷贝。

https://github.com/qinyuanpei/HttpServer/ 一个使用C#编写的简易Web服务器

     HTTP是超文本传输协议(HyperText Transfer Protocol)的简称,它建立在C/S架构的应用层协议,熟悉这部分内容的朋友应该清楚,TCP/IP协议是协议层的内容,它定义了计算机间通信的基础协议,我们熟悉的HTTP、FTP、Telnet等协议都是建立在TCP/IP协议基础上的。在HTTP协议中,客户端负责发起一个Request,该Request中含有请求方法、URL、协议版本等信息,服务端在接受到该Request后会返回一个Response,该Response中含有状态码、响应内容等信息,这一模型称为请求/响应模型。HTTP协议迄今为止发展出3个版本:

     0.9版本

      已过时。该版本仅支持GET一种请求方法,不支持请求头。因为不支持POST方法,所以客户端无法向服务器传递太多信息。

     HTTP/1.0版本

       这是第一个在通讯中指定版本号的HTTP协议版本,至今依然被广泛采用,特别是在代理服务器中。

     HTTP/1.1版本

      目前采用的版本。持久连接被默认采用,并能很好地配合代理服务器工作。相对1.0版本,该版本在缓存处理、带宽优化及网络连接地使用、错误通知地管理、消息在网络中的发送等方面都有显著的区别。


  HTTP协议通信的核心是HTTP报文,根据报文发送者的不同,我们将其分为请求报文和响应报文。其中,由客户端发出的HTTP报文称为请求报文,由服务端发出的报文称为响应报文。下面我们来着重了解和认识这两种不同的报文:

       请求报文:请求报文通常由浏览器来发起,当我们访问一个网页或者请求一个资源的时候都会产生请求报文。请求报文通常由HTTP请求行、请求头、消息体(可选)三部分组成,服务端在接收到请求报文后根据请求报文请求返回数据给客户端,所以我们通常讲的服务端开发实际上是指在服务端接收到信息以后处理的这个阶段。下面是一个基本的请求报文示例:

/* HTTP请求行 */
GET / HTTP/1.1
/* 请求头部 */
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-Hans-CN, zh-Hans; q=0.5
Connection: Keep-Alive
Host: localhost:4000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko

/* 消息体 */

       响应报文:响应报文是指在服务端接收并处理了客户端的请求信息以后,服务端发送给客户端的HTTP报文,服务端开发的重要工作就是处理来自客户端的请求,所以这是我们开发一个HTTP服务器的核心工作。和请求报文类似,响应报文由HTTP状态行、响应头、消息体(可选)三部分组成。例如我们通常熟悉的200和404分别表示连接正常和无法访问资源这两种响应状态。下面是一个基本的响应报文示例:
 

/* HTTP状态行 */
HTTP/1.1 200 OK
/* 响应头部 */
Content-Type: text/html;charset=utf-8
Connection: keep-alive
Server: Microsoft-IIS/7.0
Date: Sun, 12 Jun 2016 11:00:42 GMT
X-Powered-By: Hexo

/* 消息体 */

          这里需要说明的是,实际的请求报文和响应报文会因为服务端设计的不同,和这里的报文示例略有不同,报文中头部信息参数种类比较多,我不打算在这里详细解释每个参数的含义,我们只需要对报文格式有一个基本的认识即可,想了解这些内容的朋友可以阅读这里。在请求报文中我们注意到第一行,即HTTP请求行指明当前请求的方法。所以下面我们来说说HTTP协议的基本请求方法。常见的方法有GET、POST、HEAD、DELETE、OPTIONS、TRACE、CONNECT,我们这里选取最常用的两种方式,即GET和PSOT来讲解。

       GET:最为常见的一种请示方式

        当客户端从服务器读取文档或者通过一个链接来访问页面的时候,都是采用GET方式来请求的。GET请求的一个显著标志是其请求参数附加在URL后,例如”/index.jsp?id=100&option=bind”这种形式即为GET方式请求。GET方式对用户而言,传递参数过程是透明的,因为用户可以通过浏览器地址栏直接看到参数,所以这种方式更适合用来设计API,即在不需要验证身份或者对安全性要求不高的场合,需要注意的是GET方式请求对参数长度由一定限制。

       POST:

       POST克服了GET方式对参数长度存在限制的缺点,以键-值形式将参数封装在HTTP请求中,所以从理论上讲它对参数长度没有限制(实际上会因为浏览器和操作系统的限制而大打折扣),而且对用户来讲参数传递过程是不可见的,所以它是一种相对安全的参数传递方式通常用户登录都会采取这种方式,我们在编写爬虫的时候遇到需要登录的情况通常都需要使用POST方式进行模拟登录


2.2、HTTP请求的格式

         这几篇博客介绍的非常详细

https://www.cnblogs.com/chenyang920/p/5609116.html

https://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html

     好了,虽然2.1小结,大概介绍了什么是HTTP请求,但是并没有很好得整理。下面我画一个图,说明HTTP请求的格式。

 

   这幅图的红色部分,主要用在REST请求。我会在我的REST博客上,再画一个REST请求/响应的图:

https://blog.csdn.net/xpj8888/article/details/89466213

2.3、封装HTTP(API形式给别人调用)

如果你自己建了一个服务器售卖给别人,然后肯定需要封装HTTP服务,预留API接口给别人用。

https://www.cnblogs.com/tdws/p/5910932.html

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xpj8888/article/details/89475799
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 05:10:04
  • 阅读 ( 1310 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢