網頁

2021/2/8

API和Endpoint差別?

API(Application Programming Interface)(應用程式介面)是系統/應用程式依特定協議與外部構通的介面,而Endpont(API端點)是API特定接口的位址。簡單說API是endpoints的通稱。

API指系統對外溝通的協議規格,例如RESTful API使用HTTP /1.1協議,以什麼請求頭(Request Header)及資料格式傳輸(e.g. JSON、XML)等;而Endpoint是API的某個特定資源位址(url),定義了什麼動作(e.g. HTTP Method)、接收參數(e.g. path variable, query string, payload)、回應代碼(e.g. Http Status Code)及參數等。

例如下面是兩個RESTful API的endpoint。

GET | /employee/{id}
POST | /employee/{name}

以圖來表示如下。

  Client                                               Server
+--------+                                    +-------+----------------+
|        |                                    |  API  |                |
|        |                     endpoint       |       |                |
|        |                     +--------------------+ |                |
|        |<------------------->|GET  /employee/{id} | |                |
|        |                     +--------------------+ |                |
|        |                  endpoint          |       |                |
|        |                  +-----------------------+ |                |
|        |<---------------->|POST  /employee/{name} | |                |
|        |                  +-----------------------+ |                |
|        |                    endpoint        |       |                |
|        |                    +---------------------+ |                |
|        |<------------------>|GET  /department/all | |                |
|        |                    +---------------------+ |                |
|        |                    endpoint        |       |                |
|        |                    +---------------------+ |                |
|        |<------------------>|POST  /item/{amount} | |                |
|        |                    +---------------------+ |                |
|        |                                    |       |                |
+--------+                                    +-------+----------------+

但工作實務上兩者通常為同義詞,例如通常會說:「你的API怎麼又壞了」,而不太會說「你的API endpoint怎麼又壞了」。


沒有留言:

張貼留言