web-services - 处理 REST Web 服务中的操作

标签 web-services rest architecture

我有一个 Web 应用程序,用户可以在其中上传可由后端处理的样本。每个样本可以有一个或多个不同类型的文件。一旦有关 sample 的信息上传,用户可以立即或稍后请求对 sample 进行分析(在某些情况下,分析可能需要数小时)。后端基于 REST 服务。

我如何告诉后端开始分析? URL 应该基于名词的 REST 原则之一。

所以我不能使用

/startAnalysis?sampleId=55&startTime=now

取消分析怎么办?
/cancelAnalysis?sampleId=57

最佳答案

理论:

实际上,您“允许”使用 API 调用来发送不是资源的响应,它们被称为 行动 在处理 REST 操作时,您必须使用动词而不是名词。

例如,将 100 欧元转换为人民币的 REST API:

`/convert?from=EUR&to=CNY&amount=100`

因此您的 REST 操作 startAnalysiscancelAnalysis是有效的。

我建议你阅读 Web API Design (免费电子书)来自 apigee这是对 REST API 设计的简短介绍。它还涵盖 REST 操作。

实践:

您还可以想象“分析的开始”是分析资源状态的一部分。您可以使用 PATCH 或 PUT 来更新分析资源的状态,而不是使用操作。

更详细的解决方案可能是:
  • 有一个示例资源:/sample
  • 有一个分析资源:/analysis
  • 使用 POST 或 PUT 创建示例资源后,您可以通过 POST 在创建的示例资源上创建分析资源:/sample/1234/analysis
  • 为了开始 sample 分析(您甚至可以发布有关何时开始分析的信息)。
  • 如果要取消样本分析,则可以删除之前创建的分析资源:/sample/1234/analysis/abcde
  • 关于web-services - 处理 REST Web 服务中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571884/

    相关文章:

    web-services - 如何使用 REST Web 服务上传包含元数据的文件?

    asp.net - JWT认证工作流程

    java - 设计Java API

    ios - 单个 VIPER 模块中的多个 View Controller

    c# - ASP.NET MVC3 和 MongoDB

    java - 洋葱-六边形架构依赖混淆

    c# - 如何在 ASP.NET 中调用 SOAP 服务

    java - Apache cxf java-first 和 SOAP 模块 npm

    php - 用于创建重复配置文件的 paypal parameater 出现错误,有人可以帮我解决一下吗

    c# - Visual Studio 服务引用的自定义模板?