CODEARTS API-API设计:设计API

时间:2024-11-12 10:53:17

设计API

接口文档应针对以下要素进行设计:

  • 接口基本信息
  • 接口路径
  • 请求方式
  • 接口请求参数
  • 接口返回响应
  • 安全方案

接口基本信息

填写接口的基本信息,包括:

  • 名称:接口名称。
  • 摘要:接口的摘要信息。
  • 状态:API生命周期的状态,包括设计中、联调中、测试中、测试完、已发布、将废弃、已废弃。
  • 所属目录:接口在项目中所属的目录。
  • 所属Tags:接口所属的Tags,可以直接选择所属目录信息当作所属Tags,也可以在所属Tags框中手动输入Tag名再回车来生成所属Tags。
  • 描述:可添加接口的相关描述,包括接口功能、使用注意事项、使用场景定义等详细描述信息,接口描述支持通用Markdown语言编辑。

接口路径

接口的URL,客户端可以通过接口路径向服务端发起请求。以“/”开头,如:“/car”、“/car/{owner}”。

  • 接口路径一般不包含 域名 和http、https协议名,如需加上域名进行调试,在调试功能页面有相应处理。
  • 大括号“{}”中间的字符串表示Path参数。
  • 不支持通过接口路径来添加Query参数,如:“/car?owner=zhangsan”。
  • 支持创建100个项目中根目录。

请求方式

定义接口的请求方式,制定了客户端对服务端资源操作的方法,在API设计过程中,需要根据业务和操作类型选择合适的请求方式。

  • GET(获取):用于获取指定资源,使用查询参数传递参数,适用于读取资源和查询数据。
  • POST(提交):用于提交数据。POST请求可以传递请求体参数,适用创建新资源、提交表单数据或执行某些操作等场景。
  • PUT(更新):用于更新或替换服务端的指定资源。
  • DELETE(删除):用于删除服务端的指定资源。
  • OPTIONS(选项):用于获取服务器支持的http方法和资源的相关信息。可用于客户端与服务端之间的握手过程,了解服务器所支持的方法和功能。
  • HEAD(请求头):与GET类似,但只返回响应头部,不返回实体内容,用于获取资源的元信息,如:文件大小、修改日期等。
  • PATCH(补丁):用于对资源进行局部更新。PATCH请求类似于PUT请求,但是只更新资源的一部分。
  • TRACE(跟踪):用于简历与代理服务器的隧道连接,通常用于进行安全的SSL/TLS加密通信。

接口请求参数

  • Params、Path、Header、Cookies
    • Query参数:接口请求中的一种参数传递方式,它通常用于传递一些可选的参数,比如过滤条件、排序方式、分页参数等。在URL中表现为末尾“?”后的字符串(如:“/car?owner=zhangsan”,那么“owner=zhangsan”即Query参数,其中“owner”为参数的key,“zhangsan”为参数的value)。
    • Path参数:也称为“路径参数”,是API请求中的一种参数传递方式。在URL中表现为大括号“{}”括起来的字符串(如:“/car/{owner}”,那么“{owner}”表示key为“owner”的Path参数)。
    • Header参数:请求头中的参数。
    • Cookies:类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
    • 前置脚本:CodeArts API支持接口前置脚本操作,详见脚本能力
    • 后置脚本:CodeArts API支持接口后置脚本操作,详见脚本能力

  • 请求体
    在发起http请求时,需要带上一些参数以便服务器处理,通过http请求体传递的参数被称为Body参数。Body参数包含在请求的主体部分中,通常是一些表单数据、JSON数据或者二进制数据。在发送请求时,会根据Body参数类型,自动在请求Header中添加对应Content-Type参数。若手工设置Content-Type的类型,则必须与Body的参数类型匹配,否则系统会自动忽略掉手动设置的Content-Type值。
    • none:无body参数。
    • application/json:json格式数据。Content-Type为 “application/json”。
    • application/xml:xml类型数据,用于标识文件和图像等没提类型,也可以标识结构化数据。Content-Type为 “application/xml”。
    • multipart/form-data:表单数据。Content-Type为 “multipart/form-data”。
    • application/x-www-form-urlencoded:将表单数据编码后传输到服务器。数据被编码为一系列键值对,每个键值对之间以&连接,并且键与值之间以=分隔。Content-Type为“application/x-www-form-urlencoded” 。

    此外,还支持根据Body体数据结构自动生成示例,以及单击“智能导入”,根据输入的Json自动生成数据结构功能。

接口返回响应

返回响应的定义包含:返回响应的状态码、响应内容的数据结构、响应示例和响应头。

  • 返回响应的状态码:通过加号来添加运行接口后可能的响应状态码,单击响应状态码可以对状态码进行修改。
  • 响应内容的数据结构:规定响应内容的格式,分为“application/json”、“application/xml”、“text/plain”三种,“application/json”和“application/xml”两种情况下可以对响应内容的结构进行进一步定义,如:响应内容为“application/json”,规定json内容里的参数类型等。
  • 响应示例:响应内容的示例。
  • 响应头:返回响应的Header。

返回响应也可以直接引用公共模型中已定义好的“公共响应”,并且支持自动生成响应示例。

安全方案

OpenAPI规范中,安全模型对应OpenAPI3.0的components.securitySchemes。大部分的Web服务都需要经过身份认证才能访问,security就是用于描述API的安全信息和访问授权协议等信息的对象,Open API支持的最常见授权方案如下:

  • API key
  • HTTP
  • Oauth2.0
  • OpenID Connect

安全方案引入需要在公共模型中建立安全模型,详见•安全模型

support.huaweicloud.com/usermanual-apiarts/apiarts_01_0002.html