如何设计 Web 服务 API?方法?工具?输出



我是Web应用程序设计的新手。似乎当代的Web应用程序通常采用以下形式:

  • 前端利用各种JS框架来构建UI。
  • 然后,前端使用 JS 调用后端 Web 服务来交换 XML 或 JSON 数据并相应地更新 UI。
  • 后端分为多个层,并向任何外部公开 Web 服务 API。
  • Web 服务 API 也用于后端层之间的通信。

因此,Web 服务 API 应该是设计的关键部分。

我们如何设计它?具体来说:

  • 开始设计需要哪些数据/材料?
  • 我们可以使用哪些工具?(我听说过一些将XML转换为类的工具。
  • 设计的最终输出是什么样的?

加 1

具体来说,假设有这样的要求:

  1. 客户应该能够从文件存储库。

  2. 在修改文件存储库上的文件之前,必须对客户进行身份验证。

如何将其转换为详细的 API 规范,然后转换为具体的类定义?

相关链接:http://piwik.org/blog/2008/01/how-to-design-an-api-best-practises-concepts-technical-aspects/

添加 2 - 关于休息

读了几本书后,我得出了这样的结论:

RESTful 架构只是众多集成方式之一应用程序。它利用 Web 标准,希望使集成简单自然。资源由 URL 标识,使用 HTTP 方法操作,并在某些序列化中传输在整合各方方便的情况下形成。

要创建Web API(即RESTful服务(,您需要遵循REST原则。我认为这个链接可以给你一些关于RESTful服务/Web API设计的提示:http://restlet.com/blog/2015/03/16/designing-a-web-api/。

简而言之,RESTful 服务应该利用它们设计的 HTTP 方法:

  • 方法GET:返回资源的状态
  • 方法 POST :对资源执行操作(在资源列表中创建元素,...(。注意不要在URL中使用操作名称(例如/elements/some-action-name(,因为它不是RESTful。
  • 方法 PUT:更新资源的完整状态
  • 方法PATCH:部分更新资源的状态
  • 方法DELETE:删除资源

您还需要注意它们可以应用于不同的级别,因此方法不会执行相同的操作:

  • 列表资源(例如,路径/elements(
  • 元素资源(例如,路径/elements/{elementid} (

您必须考虑的其他重要事项是:

  • 使用状态代码告知客户端请求是否成功(2xx 系列(、由于客户端(4xx 系列(或服务器(5xx 系列(而失败
  • 利用 HTTP 标头。例如,标头Content-Type用于使用的内容类型(例如 JSON 的应用程序/json(,如果需要,Accept用于内容协商......

否则,您可以利用一些格式(如Swagger和RAML(来制作Web API。像Restlet Studio这样的工具可以很好地帮助在线创建REST服务的结构,获取相应的Swagger和RAML内容,甚至生成服务器框架或客户端SDK。你可以注意到这个工具只遵循 REST 原则...

关于安全性,您需要利用Authorization标头。有几种策略:

  • 基本的一个。用户名/密码使用 Base64 编码并在标头中发送。
  • 基于令牌的。您可以查看此链接以获取更多详细信息:https://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/
  • OAuth2.请参阅此链接:http://www.bubblecode.net/en/2013/03/10/understanding-oauth2/。

关于文件上传,您可以利用多部分内容。请参阅此链接:http://restlet.com/blog/2015/10/27/implementing-file-upload-with-restlet-framework/。我们使用 Restlet 框架,但您可能会获得一些通用提示......

希望对您有所帮助,蒂埃里

在我看来

,Rest-full API 的概念有点模糊,我建议您 http://martinfowler.com/articles/richardsonMaturityModel.html 看看这篇文章

实际上,没有多少公共休息的 API 达到了所讨论的 3 级。一般的想法是围绕应用程序处理的"资源"对您的 API 进行建模,并尊重正确的 http 动词。

至于我有点喜欢的工具 https://apiary.io/它可以帮助您构建API,也可以提供模拟响应

最新更新