Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Q13. [個人技能題組][Backend] 功能:商品頁面,技術需求變更。 #14

Open
wildwindjen opened this issue Mar 16, 2017 · 6 comments

Comments

@wildwindjen
Copy link
Contributor

wildwindjen commented Mar 16, 2017

API 改成 RESTful 的風格。

a. 什麼是 RESTful 風格?
b. 什麼是 HTTP Request? HTTP Response? HTTP Method? HTTP Headers?
c. status code 分別有哪幾類?代表啥意義?
d. 你這次 API 設計用到哪些 HTTP Header 跟 status code?為什麼這樣設計?
e. 請提供驗收項目清單。

提示:
如果你不了解 HTTP,RFC 723X 系列是不錯的開始。

答題時間: 24 hr

@dustfantasy
Copy link

dustfantasy commented Apr 8, 2017

「於2017/04/08 開始答題」

https://gitlab.com/enioy74/Practice1/blob/master/controllers/product.js

a.簡單來說,RESTful 風格是利用HTTP協議現有的規範,來完成簡潔易懂的API,而不用透過額外一些自定義的數值來達成目的。

b.HTTP 是使用無狀態的請求回應的通信協議,以客戶端發送HTTP Request而伺服器回傳HTTP Response達成溝通。

HTTP Request,HTTP Response
Request-Response的通訊是想要溝通的一方必須發出請求,而收到請求的一方進行回應。
HTTP Request即為發送的請求,而發送請求的那一方被稱作客戶端。
HTTP Response為對收到的請求進行的回應,發送回應的則是伺服端。

HTTP Method
GET,POST,PUT...這些為HTTP Method
若設計的請求有依照規範,則這些方法可以表示請求大致是為了什麼而被發送,像GET就是取得資料,PUT更新資料等。

HTTP Headers
header是在請求/回應中的附加資訊,在請求/回應中包含有各種不同涵義的header,為內容的metadata。

c. status code以數字開頭分成五類1XX,2XX,3XX,4XX,5XX
1XX
表示請求以被接受,需要繼續處理,屬於臨時響應。
2XX
表示請求已被伺服器成功理解接收並處理。
3XX
表示客戶端需要進一步動作才能完成請求,通常是重導向。
4XX
客戶端發送的請求是錯誤的。
5XX
這代表出錯是伺服器那邊的問題。

d.
HTTP Header
Authorization用於認證
status code
只用到200,因對於錯誤回應的設計雖然可以設計成回應4xx的類型,但對於前端來說這樣也需要多判斷一個status code,因此我只將錯誤放置回應訊息的error中表示。

e.對於修改後的API名稱進行確認
1.使用postman以原先定義的API進行連線,預期結果無法連線。

2.使用postman以新定義的API進行連線,預期結果成功連線。

「於 2017/04/09 答題結束」

@YenChunchen
Copy link

YenChunchen commented Apr 15, 2017

「於2017/04/15 開始答題」
a. 什麼是 RESTful 風格?一種網路架構的風格,充份利用的 http的協訂內容(像Method,status code等)
b. 什麼是 HTTP Request? HTTP Response? HTTP Method? HTTP Headers?
HTTP Request? client端發出的,client可以透過request去對某個資源作動作
HTTP Response? server端發出的,server會依照當下情況及request的目的去決定要作哪些回覆(response)
HTTP Method? 主要有get,post,put,delete,options,trace可依照其Method不同知道request的動作
HTTP Headers?對request/response的內容作描述,使接收方更容易解析
c. status code 分別有哪幾類?代表啥意義?

  • 1XX:代表request已被接受,需要繼續處理
  • 2XX:代表已成功被伺服器接收,理解並接受
  • 3XX:代表需要client端採取進一步的操作才能完成請求,通常用於重定向
  • 4XX:代表client可能發生錯誤,無法處理該request
  • 5XX:代表server端發生錯誤,server無法處理

d. 你這次 API 設計用到哪些 HTTP Header 跟 status code?為什麼這樣設計?
200:正確回應或查無該筆資料時使用;因為正確回應或查無資料該行為不代表任一方錯誤,故200 success
400:client error > 欄位錯誤時使用;因為是使用者需自行輸入的欄位,故錯誤即判4XX,client error
500:server error > DB break時使用;因為是DB server問題,故用5XX server error
e. 請提供驗收項目清單。
使用上題的API 分別使用post,put,delete,get Method去測試,如和預設方法相同得出對應結果及狀態碼即為完成

@PenguinRun
Copy link

PenguinRun commented Apr 18, 2017

「於2017/04/18 開始答題」

a. 什麼是 RESTful 風格?
b. 什麼是 HTTP Request? HTTP Response? HTTP Method? HTTP Headers?
c. status code 分別有哪幾類?代表啥意義?
https://medium.com/@justinlee_78563/%E9%97%9C%E6%96%BCrestful-60063a085f4a

d. 你這次 API 設計用到哪些 HTTP Header 跟 status code?為什麼這樣設計?

  • HTTP Header
    • x-access-token:用來辨識是否是註冊過的會員。
  • Status code
    • 只用到200。因為一開始就沒個別分成用特定的status code去設計且為了讓一整個設計有一致性,所以只用到了200。

e. 請提供驗收項目清單。
與上一題的驗收項目相同。

「於2017/04/19 答題結束」

@wildwindjen
Copy link
Contributor Author

@YenChunchen

500:server error > DB break時使用;因為是DB server問題

server error 是 DB 問題?有其他可能嗎?

@YenChunchen
Copy link

@wildwindjen 後端程式break時也是屬於status code:5XX的範圍內

@HoHow
Copy link

HoHow commented May 13, 2017

「於2017/05/13 開始答題」

a. 什麼是 RESTful 風格?
早期HTTP method 都只用get和post來處理資料
透過明確定義HTTP method 來執行相關的功能get=取得資料,post=傳送資料,put=更新資料,delete=刪除資料

b. 什麼是 HTTP Request? HTTP Response? HTTP Method? HTTP Headers?
request=client發出請求給server
response=server接收到client的request處理完後的回傳資料
method=說明此次請求的method
Headers=幫助server更快解析資料或是可以接收特定參數

c. status code 分別有哪幾類?代表啥意義?
1XX:代表request已被接受,需要繼續處理
2XX:代表已成功被伺服器接收,理解並接受
3XX:代表需要client端採取進一步的操作才能完成請求,通常用於重定向
4XX:代表client可能發生錯誤,無法處理該request
5XX:代表server端發生錯誤,server無法處理

d. 你這次 API 設計用到哪些 HTTP Header 跟 status code?為什麼這樣設計?
HTTP Header: token 判斷使用者是否登入
status code: 使用200和400 成功執行回應200 失敗回應400,我覺得可以讓前端清楚知道現在的狀態,就是一個好設計
e. 請提供驗收項目清單。
使用postmant測試產品相關method與上題相符

「於2017/05/13 結束答題」

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants