什么是 RESTful API?

2023年2月4日

💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容

什么是 API?

API 全名为 Application Programming Interface,最简单的理解为,我们不需要知道他实际上是如何实作的,只要知道要怎么使用它即可。举例来说:就像你走进一间餐厅,在菜单上画好品项后递给老板,老板就能够提供你需要的餐点,而你不需要去在意餐点是怎么被实做出来的。

所以比起在意它实际上怎么被制作出来的,我们更在意怎么获得想要的东西,因此会更在意:「输入的方法」以及「输出的结果」,对应上面的例子就是:「该如何点餐」以及「餐点的结果」。

什么是 REST?

REST 全名为 Representational State Transfer,是一种软件架构,他最初是用来管理复杂网路上的通讯指导方针指导方针建立。而 RESTful API 意旨遵循着 REST 架构风格的 API ,而 REST 架构风格需含以下原则:

  1. 统一介面:将操作的细节作抽象,并提供统一的操作方式和规格。
  2. 无状态:无状态意旨服务器独立于所有之前的请求,所以用户端可以按任何顺序去请求资源。
  3. 分层系统:用户端不清楚服务器端有几层,甚至服务器端可以再向其他服务器端请求资源。
  4. 可快取性:用户端在获得第一次回应后快取一些资讯,然后后续会直接使用快取中获得资讯。 (例如:网站中每个页首、页尾、LOGO 等)
  5. 随需编码(code on demand):Server 可以随时扩充功能,因应 Client 的即时需求。

什么是 RESTful API?

是一种风格,他描述了如何实现 Web API 的架构,基于 HTTP 协定,用来建立分散式系统,并支援多种程式语言,他的优点包含:

  • 可扩展性:由于系统无需保留 Client 状态,因此可以提高扩展效能。
  • 灵活性:由于 Client 与 Server 完全分离,因此分层的应用程式功能可以提供灵活性。
  • 独立性:可以使用各种程式语言来编写程式,不影响 API 的设计。

RESTful API 请求资源的方法

需要包含的元件为:

  • 唯一资源识别符: 服务器通常使用统一的 URL 来执行资源识别。
  • 方法:通常用 HTTP 来实作,因此需要告诉 Server 用什么样的方法操作
    • GET:获得资源
    • POST:新增资源
    • PUT:修改资源(若原本无资料则新增)
    • PATCH:修改资源(只修改部分资源)
    • DELETE:删除资源
  • HTTP 标头:Client 与 Server 之间的中继资料,当中包含所需参数(路径参数、Cookie 参数等)

回应状态码

状态码为 Server 对于 Client 请求的回应,用一个三位数的整数来表示服务器回应的状态。

1xx:代表 Request 已被接受,但需要继续处理,由于 HTTP / 1.0 的协议中并没有任何 1xx 得状态码,因此除了试验以外,都禁止回传 1xx 的回应。

2xx:表示 Request 已成功被接受。

3xx:代表 Client 需要再进一步的操作才能完成 Request,通常用来重新导向。

4xx:Client 端错误,包含未授权、无资源、参数错误等。

5xx:Server 端错误,无法完成对 Request 的处理。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們