0
点赞
收藏
分享

微信扫一扫

http基础知识

非凡兔 2022-01-09 阅读 57

目录

1.概述

2.http请求报文格式

3.http响应消息格式


1.概述

编写web语言:

  1. java
  2. php,现在都在尝试用go语言重写
  3. python,例如:豆瓣
  4. go语言 ===》 beego,gin两个主流的web框架

https协议:我们使用浏览器访问的时候发送的就是http请求

  1. http是应用层的协议,底层还是依赖传输层:tcp(短连接),网络层(ip)
  2. 无状态的,每一次请求都是独立的,下次请求需要重新建立连接
  3. https:     1,http是标准协议。2,https不是标准协议 ===》 https = http+ssl(非对称加密,数字证书) 3,现在所有网站都会尽量使用https开发:安全。

2.http请求报文格式

一个http请求可以分为四部分:

1,请求行 :包含:

                    1,格式:方法+URL+协议版本号;

                    2,请求方法:GET:获取数据; POST:上传数据(表单格式,json格式) PUT:修改数据;  DELETE:删除数据

2,请求头:

                    1,格式:key:value

                    2,可以有很多键值对(包含协议自带,也包括用户自定义的)

                    3,常见重要头:Accept:接收数据的格式;

                                               User-Agent:描述用户浏览器的信息;

                                               Connection:Keep-Alive(长链接),Close(短链接);

                                                Accept-Encoding:gzip,xxx  描述可以接受的编码

                                               Cookie:由服务器设置的key-value数据,客户端下次请求的时候可以携带过来

                                                Content-Type:application-form(表示上传的数据是表单格式);application

                                               用户自定义的:name:Duke ;age:18等

3,空行:高数服务器,请求头结束了,用于分割

4,请求包体(可选的)

                   1,一般在POST方法时,会配套提供BODY

                   2,在GET的时候也可以提供BODY,但是这样容易混淆,不建议这样使用

                   3,上传两种数据格式:

                                1,表单:姓名,性别,年龄

                                2,json数据格式

前端与后台传输数据方法:

  1. 放在请求头中
  2. 放在请求包体中
  3. 放在URL中

3.http响应消息格式

http响应格式分为四部分:

1,状态行

      1,协议格式:协议版本号+状态码+状态描述

      2,实例1:HTTP/1.1 + 200 +OK

      3,实例2:HTTP/1.1 + 404 + Page not found

      4,常用的状态码:

             1xx ===》客户端可以即系发送请求(一般感知不到)

             2xx ===》正常访问,200

             3xx ===》重定向

             4xx ===》

                   401 ===》未授权 not authorized

                   404 ===》Not found

             5xx

                   501 ===》internal error (服务器内部错误)

2,响应头

      1,Content-Type:application/json

      2,Server:Apache

      3,Data

      4,....

3,空行

      用于分割,表示下面没有响应头了

4,响应包体

     1,通常是返回josn数据

代码演示:

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

//http响应代码显示
func main() {

	//http包

	client := http.Client{}

	resp, err := client.Get("https://www.baidu.com")
	if err != nil {
		fmt.Println(" client.Get err", err)
		return
	}
	body := resp.Body
	readBodyStr, err := ioutil.ReadAll(body)
	if err != nil {
		fmt.Println(" ioutil.ReadAll err", err)
		return
	}

	fmt.Println("body string:", string(readBodyStr))

	ct := resp.Header.Get("Content-Type")
	date := resp.Header.Get("Date")
	server := resp.Header.Get("Server")

	fmt.Println("Content-Type:", ct)
	fmt.Println("Date", date)
	//BWS是Baidu Web Server,是百度开发的一个web服务器 大部分百度的web应用程序使用的是BWS
	fmt.Println("Server", server)

	url := resp.Request.URL
	code := resp.StatusCode
	status := resp.Status

	fmt.Println("url:", url)
	fmt.Println("code:", code)
	fmt.Println("status:", status)

}

演示结果:

举报

相关推荐

0 条评论