REST Web API困境。更喜欢什么,Web API标准或API的性能?

时间:2014-06-20 09:50:09

标签: .net rest asp.net-web-api

在开发Web API时,更喜欢什么,Web API标准还是性能?例如,要更新(PUT)一组对象(将其中一个属性更改为公共值),我可以接受对象列表并通过优化性能Count(对象)次数来更新它们。

2 个答案:

答案 0 :(得分:0)

由于没有关于如何实现RESTful API的真正规则,这取决于您。

如果你可以通过支持批量PUT来让每个人的生活变得更轻松,那么就去做吧。

想一想。假设你必须更新100个资源,你想做1个电话,还是100个? 100个单独的呼叫可能会花费很多,如性能和花费的时间。

它还可以取决于您的服务器的实现方式。在我在本答案底部链接的第一个问题中,提到当您想支持错误报告时,执行批量请求可能会导致问题。

无论您选择什么,只需确保API的用户确切知道如何形成有效请求以及他可以期待的响应。


另见
RESTful way to create multiple items in one request


REST updating multiple resources

答案 1 :(得分:0)

如果大多数客户端可以发出更少的请求来获取或修改更多数据,那么它们的性能会更好。将批量操作构建到API中以支持这种用例是个好主意。

如果您对表现如此感兴趣,则值得考虑以下事项:

  • 连接:Keep-Alive :维护与API服务器的连接以获得多个API请求可以大大提高性能。如果配置正确,几乎每个Web服务器都应支持保持活动连接。某些HTTP客户端库要求您执行一些额外的工作以启用持久连接。持久连接可能会对API的感知性能产生重大影响。

  • 期望:100-Continue :如果API客户端即将发送带有大型实体主体的请求,例如POST,PUT或PATCH,他们可以发送“Expect: 100-继续“在他们的HTTP标头中,并在发送他们的实体主体之前等待”100继续“响应。这允许API服务器在浪费带宽以返回错误响应(例如401或403)之前验证请求的大部分有效性。支持此功能并不常见,但它可以在某些情况下提高API响应能力并减少带宽。 (RFC2616 §8.2.3)。

  • HTTP压缩:HTTP压缩既可用于响应主体(Accept-Encoding:gzip),也可用于请求主体(Content-Encoding:gzip)以提高网络性能HTTP API。

最大限度地提高性能是令人钦佩的,但是,最终,如果你需要时间并需要提供一些东西,那么你需要务实并继续做事。