网站开发所需的http相关概念

Http Concepts: by Seven

摘要:这是go语言网站开发的第一篇文章,http相关知识总结,包括

  • HTTP methods (POST, GET, DELETE, PUT, PATCH, OPTIONS)
  • HTTP status code (2xx, 3xx, 4xx, 5xx)
  • REST API. See https://en.wikipedia.org/wiki/Representational_state_transfer
  • HTTP header
  • Cookies
  • POSTMAN

一,Http Methods:

  • post: 创建子资源
  • get: 获取资源
  • delete: 删除资源
  • put: 创建 更新资源
  • patch: 部分更新(如:某一个前端功能只是向后端更新一个用户名,没必要更新整条该用户信息)
  • options: 用于url验证,验证接口服务是否正常。

·

二,HTTP status code (2xx, 3xx, 4xx, 5xx)

  • 2xx: 成功状态码
  • 3xx: 重定向状态码
    • 303: 重定向
  • 4xx: 客户端错误状态码
    • 400:服务器不理解请求的语法,常见:前端携带的参数有问题
    • 403:服务器拒绝请求
    • 404:未找到
    • 405: 方法禁用,常见:服务器要求get,客户端表单发送post请求
  • 5xx: 服务端错误状态码
    • 500: 服务器内部错误
    • 503:服务器目前无法使用

三,Restful API

1.简介

Representational state transfer, 简称REST,即 表现层状态转化

  • 资源:Resources,

    指的是网络上的某个数据,如,一个文件,一种服务等

  • 表现层 Representational

    资源的表现层,指的是资源的具体呈现形式,如HTML, JSON等

  • 状态转换

    指的是状态变化,通过http方法实现

    get 获取资源

    post 新建资源

    put 更新资源

    delete 删除资源

    简单来说,客户端通过Http方法对服务器的资源进行操作,实现表现层的状态转化

2.设计原则

Restful是目前最流行的API设计规范,用于Web数据接口设计

Restful API设计原则:

  • 尽量将API部署在一个专用的域名下,如: http://api.itany.com

  • API的版本应该在URL中体现,如:http://api.itany.com/v2

  • URL中不要使用动词,应使用资源名词,且使用名词的复数形式,如:

    功能说明 请求类型 URL
    获取用户列表 GET http://api,itany,com/v2/users
    根据id获取用户 GET http://api.itany,com/v2/users/id
    添加用户 POST http://api,itany.com/v2/users
    根据id删除用户 DELETE http://api.itany.com/v2/users/id
    修改用户 PUT http://api.itany.com/v2/users

    注:简单来说,可以使用同一个URL,通过约定不同的HTTP方法来实施不同的业务

    • 服务器响应时返回JSON对象,应包括HTTP状态码,消息,结果等,如:

      {code:200,message:“success”,result:{id:1001, name:“tom”}}

    • 最好在返回的结果中提供链接,指向其他的API方法,使得用户不用查文档,就能知道下一步该怎么做

3.用法

cloud-provider

  • 构建Restful API服务

cloud-consumer

  • 使用RestTemplate调用Rest服务
  • RestTemplate是Spring提供的用于访问Rest服务的客户端,提供了访问远程Http服务的方法

四,HTTP Header

HTTP首部字段类型

  • 通用首部字段:请求报文和响应报文两方都会使用的首部
  • 请求首部字段:从客户端向服务器端发送请求报文时使用的首部
  • 响应首部字段:从服务器端向客户端返回响应报文时使用的首部
  • 实体首部字段:针对请求报文和响应报文实体部分使用的首部

常用的HTTP请求头

协议头 说明 实例
accept 可接受的响应内容类型(Content-Types)。 Accept: text/plain
Accept-Charset 可接受的字符集 Accept-Charset: utf-8
Accept-Encoding 可接受的响应内容的编码方式。 Accept-Encoding: gzip, deflate
Accept-Language 可接受的响应内容语言列表。 Accept-Language: en-US
Accept-Datetime 可接受的按照时间来表示的响应内容版本 Accept-Datetime: Sat, 26 Dec 2015 17:30:00 GMT
Cache-Control 用来指定当前的请求/回复中的,是否使用缓存机制。 Cache-Control: no-cache
Connection 客户端(浏览器)想要优先使用的连接类型 Connection: keep-alive upgrade
Cookie 由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie Cookie: $Version=1; Skin=new;
Content-Length 以8进制表示的请求体的长度 Content-Length: 348
Content-Type 请求体的MIME类型 (用于POST和PUT请求中) Content-Type: application/x-www-form-urlencoded
From 发起此请求的用户的邮件地址 From: [email protected]

常见的HTTP响应头

响应头 说明 实例
Access-Control-Allow-Origin 指定哪些网站可以跨域源资源共享 Access-Control-Allow-Origin: *
Accept-Patch 指定服务器所支持的文档补丁格式 Accept-Patch: text/example;charset=utf-8
Accept-Ranges 服务器所支持的内容范围 Accept-Ranges: bytes
Age 响应对象在代理缓存中存在的时间,以秒为单位 Age: 12
Allow 对于特定资源的有效动作; Allow: GET, HEAD
Cache-Control 通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒 Cache-Control: max-age=3600
Content-Encoding 响应资源所使用的编码类型。 Content-Encoding: gzip
Content-Language 响就内容所使用的语言 Content-Language: zh-cn
Content-Length 响应消息体的长度,用8进制字节表示 Content-Length: 348
Content-Location 所返回的数据的一个候选位置 Content-Location: /index.htm
Content-MD5 响应内容的二进制 MD5 散列值,以 Base64 方式编码 Content-MD5: IDK0iSsgSW50ZWd0DiJUi==

五,Cookies (会话:session和cookie)

1. session:

  1. session是服务器维护用户状态的一种技术。
  2. session是保存在服务器端。
  3. 当客户端访问服务器时,服务器会创建一个session对象。该对象有一个唯一标识符 jsessionid。
  4. 当服务器返回响应时,会把该标识符交给浏览器保存。
  5. 当浏览器下次再访问时,会默认携带其保存的jsessionid。服务器根据其携带的jsessionid找到对应的
  6. session对象。
  7. 通过这种方式,可以实现维护用户状态的功能。

2. cookie

  1. cookie是客户端保存用户状态的一种技术。
    将信息保存在客户端中(一般清空浏览器缓存会删除这些信息)。
    当浏览器访问服务器,服务器处理完成后,会把jsessionid等数据返回给浏览器。
    浏览器把这些数据保存在cookie当中。
  2. 当浏览器再次访问服务器时,浏览器会自动地携带cookie中的内容到服务器。服务器可以获取到这些信息。
    通过此方式使得数据在客户端与服务器之间交换。
    可以通过此方式维护用户的状态。

3. 区别

cookie session
保存在客户端 保存在服务器端
只能保存字符串,字符集是ISO-8859-1 可以保存任意类型
cookie被禁用后会失效 cookie被禁用后,可以通过url重写获得session
安全性较低 安全性较高
cookie保存的数据大小有限制,一般4K左右 理论上无限制,只要服务器内存足够
分担服务器压力 增加服务器压力

六, POSTMAN

Postman是一款非常优秀的调试工具,可以用来模拟发送各类HTTP请求,进行接口测试。
在这里插入图片描述

发布了32 篇原创文章 · 获赞 1 · 访问量 4832

猜你喜欢

转载自blog.csdn.net/weixin_42426385/article/details/104144250