蓝旭前端第六周预习作业

网络请求

网络请求/返回规范

HTTP请求

HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作。
虽然它们也可以是名词,但这些请求方法通常被称为 HTTP 动词。
每一个请求方法都实现了不同的语义,但一些共同的特征由一组共享:例如一个请求方法可以是安全的、幂等的或可缓存的。
最常用的请求方法是 GET 和 POST:

GET:
GET 方法请求一个指定资源的表示形式,使用 GET 的请求应该只被用于获取数据。

HEAD:
HEAD 方法请求一个与 GET 请求的响应相同的响应,但没有响应体。

POST:
POST 方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。

PUT:
PUT 方法用有效载荷请求替换目标资源的所有当前表示。

DELETE:
DELETE 方法删除指定的资源。

CONNECT:
CONNECT 方法建立一个到由目标资源标识的服务器的隧道。

OPTIONS:
OPTIONS 方法用于描述目标资源的通信选项。

TRACE:
TRACE 方法沿着到目标资源的路径执行一个消息环回测试。

PATCH:
PATCH 方法用于对资源应用部分修改。

两段典型的请求:

GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr
POST /contact_form.php HTTP/1.1
Host: developer.mozilla.org
Content-Length: 64
Content-Type: application/x-www-form-urlencoded

name=Joe%20User&request=Send%20me%20one%20of%20your%20catalogue

服务器响应

当收到用户代理发送的请求后,Web 服务器就会处理它,并最终送回一个响应。与客户端请求很类似,服务器响应由一系列文本指令组成,并使用 CRLF 分隔,它们被划分为三个不同的块:

第一行是状态行,包括使用的 HTTP 协议版本,然后是一个状态码(及其人类可读的描述文本)。

接下来每一行都表示一个 HTTP 标头,为客户端提供关于所发送数据的一些信息(如类型、数据大小、使用的压缩算法、缓存指示)。与客户端请求的头部块类似,这些 HTTP 标头组成一个块,并以一个空行结束。

最后一块是数据块,包含了响应的数据(如果有的话)。

一段典型的响应:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 55743
Connection: keep-alive
Cache-Control: s-maxage=300, public, max-age=0
Content-Language: en-US
Date: Thu, 06 Dec 2018 17:37:18 GMT
ETag: "2e77ad1dc6ab0b53a2996dfd4653c1c3"
Server: meinheld/0.6.1
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding,Cookie
Age: 7

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>A simple webpage</title>
</head>
<body>
  <h1>Simple HTML webpage</h1>
  <p>Hello, world!</p>
</body>
</html>

响应状态码

HTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类:

信息响应 (100–199)

成功响应 (200–299)

重定向消息 (300–399)

客户端错误响应 (400–499)

服务端错误响应 (500–599)

JSON

JavaScript Object Notation (JSON) 是一种数据交换格式。尽管不是严格意义上的子集,JSON 非常接近 JavaScript 语法的子集。

基本语法

JSON-text = object / array
begin-array     = ws %x5B ws  ; [ 左方括号
begin-object    = ws %x7B ws  ; { 左大括号
end-array       = ws %x5D ws  ; ] 右方括号
end-object      = ws %x7D ws  ; } 右大括号
name-separator  = ws %x3A ws  ; : 冒号
value-separator = ws %x2C ws  ; , 逗号
ws = *(
     %x20 /              ; 空格
     %x09 /              ; 垂直制表符
     %x0A /              ; 换行符
     %x0D                ; 回车符
     )
value = false / null / true / object / array / number / string
false = %x66.61.6c.73.65   ; false
null  = %x6e.75.6c.6c      ; null
true  = %x74.72.75.65      ; true
object = begin-object [ member *( value-separator member ) ]
         end-object
member = string name-separator value
array = begin-array [ value *( value-separator value ) ] end-array
number = [ minus ] int [ frac ] [ exp ]
decimal-point = %x2E       ; .
digit1-9 = %x31-39         ; 1-9
e = %x65 / %x45            ; e E
exp = e [ minus / plus ] 1*DIGIT
frac = decimal-point 1*DIGIT
int = zero / ( digit1-9 *DIGIT )
minus = %x2D               ; -
plus = %x2B                ; +
zero = %x30                ; 0
string = quotation-mark *char quotation-mark
char = unescaped /
    escape (
        %x22 /          ; "    引号     U+0022
        %x5C /          ; \    反斜杠   U+005C
        %x2F /          ; /    正斜杠   U+002F
        %x62 /          ; b    退格符   U+0008
        %x66 /          ; f    换页符   U+000C
        %x6E /          ; n    换行符   U+000A
        %x72 /          ; r    回车符   U+000D
        %x74 /          ; t    制表符   U+0009
        %x75 4HEXDIG )  ; uXXXX        U+XXXX
escape = %x5C              ; \
quotation-mark = %x22      ; "
unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
HEXDIG = DIGIT / %x41-46 / %x61-66   ; 0-9, A-F, or a-f
       ; HEXDIG 等效于 [RFC5234] 中的 HEXDIG 规则
DIGIT = %x30-39            ; 0-9
      ; DIGIT 等效于 [RFC5234]DIGIT 规则

示例:

{
  "browsers": {
    "firefox": {
      "name": "Firefox",
      "pref_url": "about:config",
      "releases": {
        "1": {
          "release_date": "2004-11-09",
          "status": "retired",
          "engine": "Gecko",
          "engine_version": "1.7"
        }
      }
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值