iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
Modern Web

PHP框架-Symfony4 + api platform 系列 第 9

Day#9 你來我往的Server端與Client端 - Http 簡單說明

HTTP 是一種傳輸協定,主要由Request (請求) 與Response (回應) 來組成,請求和回應是網路溝通的一種過程
網路分為兩端,客戶端和服務端 ( Client and Server ) ,客戶端會向服務端發送請求,而服務端接收到並給予回應,
網路上的Client端通常指的是瀏覽器


舉例來說 : 假設今天三個客人在一家麵攤,跟老闆點餐,分別點了一碗乾麵一碗蛋花湯跟一盤小菜,老闆收到三位客人 的點餐單後,老闆送上第一個客人的乾麵和第二個客人蛋花湯後,接著跟第三個客人說小菜已經賣完了

上述例子是前兩個請求都是有成功接受到回應的,
最後一個請求,可能是Server端錯誤也可能是Client端送的請求不符合格式,總之就是Response有問題

簡單說一下幾樣會存在在請求和回應裡的資訊

  1. 基本的Request包含以下資訊:
    • Http Method : Http的請求方法
    • Path (URI) : 請求所訪問的實際位置
    • Accept : 可接受的資料型態
    • Accept-Encoding : Client端 (瀏覽器) 發給服務端 可用的編碼類型
    • Content-Type : 請求內容的類型
  2. 基本的Response包含以下資訊:
    • Status : Http回應碼
    • Content-Type : 回傳內容的類型
    • Cache-Control : 設定Cache屬性 ,可以關掉cache ( 有個屬性是max-age ,代表是response的過期時間,如果今天是在這個過期時間內重整,那cache就會存在,如果是在這個時間之後重整,瀏覽器就會重新發送一個請求)

response 回傳內容的類型並不一定是一般的json,可以改為jsonld ,以下說明一下json 跟 jsonld的差別

json 是一種輕量級的資料交換格式,主要是用 {} 來包住各個Object 物件 , 用 [] 來包住各個陣列, 用 "" 來包住各個字串,然後用逗號來區分各個變數,資料型態就是我們一般常用的那幾種 , array , int , string , object 等等...

那 jsonld又是什麼呢 ? 可以吃嗎 , 對於瀏覽器來說,的確更好吃沒錯,可以吃的更多更入味,jsonld是json的結構化資料, 啥? 啥意思 ?? 簡單來說就是在描述這個網頁的型態跟內容,瀏覽器去讀取這類的結構化資料時,可以針對不同的網頁型態去應對,看要使用哪種搜尋結果呈現

如果今天我們想促進網頁的SEO或是讓搜尋結果更好,那jsonld就是個很好的選擇

那瀏覽器或搜尋引擎要怎麼去理解網頁上的訊息並提供使用者更相關的結果呢? 主要是透過** micro data (微數據)** ,

micro data 是 google , yahoo ,bing 三個大咖攜手合作的東西,他們將 一些新舊格式的micro data 放置在schema.org的平台上來推廣, micro data是 html5的一部分 , 它的功用就是讓瀏覽器,搜尋引擎可以更了解整個網頁的內容,並簡化 RDFa 及 MicroFormats , RDFa是W3C推薦標準,它擴充了XHTML(可延伸標記式語言)的幾個屬性,MicroFormats則是我們平常廣泛使用的一系列數據格式

上面講這麼多,一句話來概括,就是 jsonld可以透過micro data 這些微數據來幫助瀏覽器或搜尋引擎找到更相關的搜尋結果 !

schema.org : https://schema.org/

microFormats : http://microformats.org/

圖片來自microFormats官方網站,提供給各位看官們參考

好了一系列的理論....想必各位看官們又開始想睡了,
下一篇開始,就要進入api platform這扇門了,會從安裝跟前置作業講起,
然後慢慢的....緩慢的前進...大概跟下面這隻一樣吧!


上一篇
Day#8 客製化驗證頂多從一片小蛋糕變三片小蛋糕而已-Customize Validation
下一篇
Day#10 API Platform 是什麼東西,能吃嗎 (((゚Д゚;)))
系列文
PHP框架-Symfony4 + api platform 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言