筆記、[NET101] 網路基礎概論 ( 4 )


Posted by s103071049 on 2021-05-06

一 、 流程

發一個 req 到 server , server 回一個 response (無論成功或失敗 server 都會回 resp) 。 傳紙條故事有很多層,目前實作處理的是 HTTP 通訊層。
HEADER (附加資訊) 、BODY (主要資訊),要注意 HEADER 是屬於哪個協定。但資訊要放在 HEADER 還是 BODY,由你要呼叫的 server 決定。這個過程叫做 call api,至於怎麼交換,api 文件會告訴你。在電腦上透過 node.js 發 req,與在瀏覽器上發 req 是不同的事情,有些地方很像,有些地方不同。

以 HTTP HEADER 舉例。

  • HTTP HEADER 有一個 HEADER 叫做 METHOD,對應傳紙條故事類似 ACTION。 method 的內容包括
    (1) get(拿資料,如:發get req 給千千,詢問今天還剩幾個便當,在這個例子中,body 不需要帶甚麼東西,因為只是要拿資料。通常要拿甚麼資料可以寫在網址或是body,又或是千千本人已經制定好規則,如果你想要甚麼內容,你可以發req 到這個網址來,所以會有不同的網址處理不同的需求。另外,瀏覽器在瀏覽網站也相當於發一個 get req,再拿到 resp 後再經瀏覽器將東西渲染出來。)
    (2) post(傳送資料給 server,通常會將資料放在 body。)

二 、 發送 req 的方法

curl、瀏覽器、node.js( library req )...

三、 process.argv

以作業二舉例,node hw2.js list,重點是我要如何拿到 js 後面的這些參數 ? 有很多種拿法,其中一種是透過 node.js 提供的 process.argv,與要拿的東西在網址上是不同的,他要拿的是參數。

一個 api 可以提供不同的服務,通常會透過 path 做區分。網址上會告訴你要拿的東西,是指這個意思。

通常要帶資訊,會用 post 。但我們也可以透過,以 query string。 https://api.twitch.tv/helix/streams?key=value,有點類似 js object 的概念,舉例來說,如果想直接帶下面的資訊,我們可以https://api.twitch.tv/helix/streams?name=peter&age=44

obj = {
  name : 'peter',
  age : '44'
}

為甚麼會有 query string,因為用 get 拿資料東西要帶額外資訊要放在 HEADER,但帶在 HEADER 會很麻煩 (?)。例如 : 直接用 get 發 req , 我拿到的資料有25筆,如果我想要更少/更多的筆數呢(?) 用 post 不合理,因為 post 蘊含新增資料。網址列上帶的額外資訊比較像是針對特定物件特定資源做操作,針對更大範圍如 : 身分驗證,會放在 header。

結論、帶資料利用 get 、 query string。

名詞小解釋 : user-agent 瀏覽器

content-type (?)

你要傳資料給 server , body 的格式要長甚麼樣子。要確認 server 有無支援。另外資料有可能帶有 = & 會造成 server 混淆,但因為有些內容是動態,所以不確定到底哪些內容有干擾性字元,所以慣例是會把每一個 value 進行編碼。
(尚未理解/查資料/再看一次課程)










Related Posts

OOP - 5 抽象類別與介面 (2)

OOP - 5 抽象類別與介面 (2)

連接RabbitMQ的AMQP時碰到The protocol requested by peer '0 0 9 1' does not match expected '3 1 0 0之原因與解法

連接RabbitMQ的AMQP時碰到The protocol requested by peer '0 0 9 1' does not match expected '3 1 0 0之原因與解法

D46_ FE101 + HW1

D46_ FE101 + HW1


Comments