RESTful API最佳实践

时间:2016-05-30 21:15:40

标签: web-services rest asp.net-web-api restful-architecture interface-design

我是Android开发人员,也对RESTful API开发有一定的了解。目前我正在使用Dot Net Web API构建API。一切都很好,但我仍然关心设计。

我现在关注的核心问题是,响应的元数据究竟应该是什么,就像我可以添加的其他有用元素一样,“响应代码”'和#39响应消息'。

对我来说,第二个问题是请求是异步还是查询或两者兼而有之。

最后一个问题是我应该使用什么技术来进行JWT或Basic Authentication等无状态通信。

2 个答案:

答案 0 :(得分:1)

首先,您应该阅读Roy Thomas Fielding的Architectural Styles and the Design of Network-based Software Architectures第5章。您将直接了解REST的架构约束,元素和视图。

  

现在我关注的核心问题是,响应的元数据应该是什么,就像我可以在“响应代码”和“响应消息”中添加的其他有用元素一样。

REST的一个架构元素是Representations。表示允许客户解释响应。在RESTful HTTP表示的情况下,通过MIME类型实现。有关更多信息,请参阅[2]。 您应该考虑的其他方面是URI,支持的HTTP方法,URL参数和消息正文。

  

对我来说,第二个问题是请求是异步还是查询或两者兼而有之。

REST的一个架构约束是客户端 - 服务器架构风格。因此,您的服务器应该处理并发请求,以便一次处理多个客户端请求。如果异步处理查询,方法或函数与RESTful无关。

  

最后一个问题是我应该使用什么技术来进行有状态的通信,如JWT或基本身份验证等。

JWT和基本身份验证都是无状态身份验证方法。术语无状态意味着客户端请求包含服务器处理客户端请求所需的所有信息。

答案 1 :(得分:0)

1)META数据 - 资源表示应按照Fielding本身的HATEOAS驱动。因此,您可以考虑添加相关资源links in meta data

2)同步/异步 - 这取决于API尝试做什么。如果它调用一个长时间运行的进程,Async API是很自然的选择。否则坚持使用Sync API。

3)有状态通信 - 成为stateless是REST架构的约束之一。请求之间不应在服务器上存储客户端上下文。客户负责管理申请状态。