API 类别 - 方法学习笔记

什么是API?

API(Application Programming Interface,应用程序接口)是一组定义、提供给第三方开发者使用的编程规范、协议和工具集合。在软件开发中,API定义了不同组件之间如何互相通信,同时也决定了外部用户如何访问内部功能。

API 分类

根据不同的分类标准,API可以分为多个类别,其中常见的分类包括:

基于目的的分类

根据不同的使用目的,API可以被分为:

  • 内部API:由同一公司或组织的不同部门或子系统之间使用的API。
  • 公共API:向任何外部用户或开发者开放的API,用于扩展产品或服务的功能。
  • 合作API:与特定合作伙伴共享的API,用于实现特定的业务目标。

基于形式的分类

根据不同的形式,API可以被分为:

  • RESTful API:符合REST(Representational State Transfer,表征状态转移)架构风格的API。
  • SOAP API:基于SOAP(Simple Object Access Protocol,简单对象访问协议)协议的API。
  • RPC API:基于Remote Procedure Call(远程过程调用)协议的API。

基于数据的分类

根据不同的数据类型,API可以被分为:

  • 数据库API:用于访问和管理数据库的API。
  • 文件API:用于访问和管理文件系统的API。

API 方法

针对不同的API类别,我们需要使用不同的方法进行开发和调用。下面针对不同的API类别,给出一些常见的API方法:

RESTful API

  • GET:用于获取资源信息。
  • POST:用于创建新的资源。
  • PUT:用于更新已有的资源。
  • DELETE:用于删除资源。

SOAP API

  • SOAP(Simple Object Access Protocol):基于XML的协议,用于在不同的应用程序之间进行通信。
  • WSDL(Web Services Description Language):用于描述服务、服务地址和通信协议等信息的XML语言。
  • UDDI(Universal Description, Discovery, and Integration):用于注册、散列表和查找Web服务的协议。

RPC API

  • 使用远程过程调用协议进行方法调用和参数传递。

数据库API

  • SQL(Structured Query Language):用于创建、查询、修改和删除数据库中的数据。
  • JDBC(Java Database Connectivity):Java语言访问数据库的标准API。

文件API

  • File API:用于访问和管理文件系统的API。
  • FileReader:用于读取文件内容。
  • FileWriter:用于写入文件内容。

实例:使用RESTful API调用GitHub Public API

首先,我们需要获取GitHub API的URL和token。

Copy Code
const apiUrl = 'https://api.github.com'; const token = 'xxxxxx';

然后,我们可以使用fetch()方法向GitHub API发送请求,并使用不同的HTTP方法来获取或修改资源信息。

  • 获取所有公开仓库:
Copy Code
fetch(`${apiUrl}/repositories`, { method: 'GET', }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
  • 根据关键词搜索仓库:
Copy Code
fetch(`${apiUrl}/search/repositories?q=javascript`, { method: 'GET', }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
  • 创建新的仓库:
Copy Code
fetch(`${apiUrl}/user/repos`, { method: 'POST', headers: { Authorization: `Bearer ${token}`, }, body: JSON.stringify({ name: 'new-repo', description: 'A new repository created by API.', private: false, }), }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
  • 更新已有的仓库信息:
Copy Code
fetch(`${apiUrl}/repos/:owner/:repo`, { method: 'PATCH', headers: { Authorization: `Bearer ${token}`, }, body: JSON.stringify({ name: 'new-repo', description: 'A new repository created by API. (updated)', }), }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
  • 删除仓库:
Copy Code
fetch(`${apiUrl}/repos/:owner/:repo`, { method: 'DELETE', headers: { Authorization: `Bearer ${token}`, }, }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

以上就是一个使用RESTful API调用GitHub Public API的实例,希望对您有所帮助。