我是Web应用程序设计的新手。似乎当代的Web应用程序通常采用以下形式:
- 前端利用各种JS框架来构建UI。
- 然后,前端使用 JS 调用后端 Web 服务来交换 XML 或 JSON 数据并相应地更新 UI。
- 后端分为多个层,并向任何外部公开 Web 服务 API。
- Web 服务 API 也用于后端层之间的通信。
因此,Web 服务 API 应该是设计的关键部分。
我们如何设计它?具体来说:
- 开始设计需要哪些数据/材料?
- 我们可以使用哪些工具?(我听说过一些将XML转换为类的工具。
- 设计的最终输出是什么样的?
加 1
具体来说,假设有这样的要求:
客户应该能够从文件存储库。
在修改文件存储库上的文件之前,必须对客户进行身份验证。
如何将其转换为详细的 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,也可以提供模拟响应