网路通讯之间必须有共同的标准,而为了界定这些标准,於是产生协定(Protocol)。(可以想成寄信或寄包裹时,填写资料都会有固定格式,如果不遵守格式或遗漏资料,邮差就没办法送信。)
HTTP是位於应用层的协定,网路浏览器能藉由HTTP交换资讯,提供使用者浏览网页的服务。
超文本传输协定 (HyperText Transfer Protocol, HTTP) 是一种用来传输超媒体文件 (像是HTML文件) 的应用层协定,被设计来让浏览器和服务器进行沟通,......
引用自 HTTP | MDN
网路模型层级的资讯,可以查查「OSI七层」或「TCP/IP协定」或参考:什麽是OSI的7层架构?和常听到的Layer 7有关?。
在交换资讯时有许多情况,有可能只是想知道某个条目的资讯,或是想要删改资料的内容。
在网页的范畴,HTTP定义了Request Methods(也称作HTTP verbs.),用以指示请求的操作内容。
HTTP的请求方法有很多种:
method | 说明 |
---|---|
GET | GET 方法请求展示指定资源。使用 GET 的请求只应用於取得资料。 |
HEAD | HEAD 方法请求与 GET 方法相同的回应,但它没有回应主体(response body)。 |
POST | POST 方法用於提交指定资源的实体,通常会改变服务器的状态或副作用(side effect)。 |
PUT | PUT 方法会取代指定资源所酬载请求(request payload)的所有表现。 |
DELETE | DELETE 方法会删除指定资源. |
CONNECT | CONNECT 方法会和指定资源标明的服务器之间,建立隧道(tunnel)。 |
OPTIONS | OPTIONS 方法描述指定资源的沟通方法(communication option)。 |
TRACE | TRACE 方法会与指定资源标明的服务器之间,执行回路返回测试(loop-back test)。 |
PATCH | PATCH 方法套用指定资源的部份修改。 |
而请求方法可能包含这些特性:
今天的文章要来谈到 GET 和 POST:
GET请求只在取得资料时使用。
fetch()
预设的方法就是"GET",因此我们会直接获得想要的资料。
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => { console.log(json) ;})
但fetch()
除了第一个必须设置的参数是URL外,还能加入第二个参数init
,作为整个request的设置。
所以上面的请求也可以改写成:
fetch('https://jsonplaceholder.typicode.com/todos/1', {
method: 'GET', // 指定请求方法
headers: { // 标头
'Content-type': 'application/json; charset=UTF-8', // 档案类型
},})
.then(response => response.json())
.then(json => { console.log(json) ;})
会执行一模一样的输出。
// output
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
GET的性质
POST是在实际应用上很广泛的请求方法,可以用作新增资料、提交订单...等等。
如果有即将POST的资料,资料类型定义在headers里的Content-Type。
我们可以试着在范例里加入资料:
fetch('https://jsonplaceholder.typicode.com/todos', {
method: 'POST',
body: JSON.stringify({
title: 'Winnie the Pooh',
id: 201,
userId: 1,
completed: true,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},})
.then(response => response.json())
.then(json => { console.log(json) ;})
POST成功的资料会像这样 :
{
'title': 'Winnie the Pooh',
'id': 201,
'userId': 1,
'completed': true,
}
注意: JSONPlaceholder只是一个模拟器,不会真的更动资料。
POST的性质
GET & POST 两者差异是?
GET | POST | |
---|---|---|
用途 | 获得资料 | 新增资料 |
安全性 | O(唯读) | X |
幂等 | O | X |
可缓存的 | O | △ |
(感觉PUT和POST可能更容易搞混,但这个明天再说明。)
【如内文有误还请不吝指教>< 谢谢阅览至此的各位:D】
参考资料:
-----正文结束-----
>>: [Day 1] 身为一名普通 iOS 开发者讲讲干话 Intro
当我们的网页引入 Vue.js 的时候,会建立一个 Vue 的全域变数,并且提供各种功能等我们去使用...
特别把描述模型和预测模型分开来写是因为两者在开发与验证阶段有不小的差异。 (https://ubiq...
练习刻板面时常常会遇到形形色色的字体 但若不是电脑本身有下载该字体的话,即便设定了还是会以预设字体呈...
URL : https://app.hackthebox.eu/machines/263 IP :...
Leetcode #207. Course Schedule 题目给你一系列的课程,每一个门课都有它...