当前位置: 首页 > 知识库问答 >
问题:

用于非CRUD操作的REST API设计,例如保存、部署、执行代码

裴浩歌
2023-03-14

REST API上下文中的资源是用某种编程语言编写的应用程序代码。可以轻松映射到HTTP谓词的CRUD操作是Save/Edit/Delete代码。难以映射到HTTP方法的非CRUD操作是在服务器上部署代码、执行代码和取消部署。

我在SO中遇到的共同建议是:

  1. 重新构造操作,使其看起来像资源的字段,例如,如果您的操作是激活引擎,则设计URI:patch engines/123,body:{“status”:“active”}
  2. 将操作视为子资源,例如将引擎/123/激活不带主体
  3. 使用查询参数,例如put engines/123?activate=true
  4. 要实用,使用非RESTful的RPC样式的URL,例如put engines/activate?id=123

我肯定无法按照#1和#2中的建议将deploy/undeploy/execute代码操作放入资源。请您分享一下您的意见,我们如何最好地设计这些操作的API?

共有1个答案

尉迟卓
2023-03-14

请您分享一下您的意见,我们如何最好地设计这些操作的API?

创建/更新/删除信息资源,并作为其副作用,在API后面工作。

所以想想文件。

PUT /deploymentRequests/abcde

Please find the artifacts from build 12345 and deploy that artifact
to machine 67890

201 Created
 类似资料:
  • 问题内容: 我正在使用自定义的CreateView(CourseCreate)和UpdateView(CourseUpdate)保存和更新课程。保存课程后,我想采取措施。我将在新课程的讲师和用户之间建立新的多对多关系(如果尚不存在)。 因此,我想将“课程”另存为课程,然后使用“ course.faculty”创建该新关系。做到这一点的最佳地点在哪里? 我正在尝试在视图的form_valid中执行此

  • 模板实体 子文档实体 模板可以有多个子文档如果模板被更新,则可以更新基于该实体的所有或部分子文档。 现在,如果我们想要更新模板,并指示服务器更新所有基于模板的文档,什么是一个好的设计呢? null 我正在尝试判断其他人在设计REST API时是否也有类似的问题。最近,在使用了很少的API之后,我认为我们可以做得比REST API更好。

  • 本文向大家介绍springdata jpa单表操作crud的实例代码详解,包括了springdata jpa单表操作crud的实例代码详解的使用技巧和注意事项,需要的朋友参考一下 1. 项目搭建 使用boot整合,导入springdata jap, mysql 驱动,lombok,web。 1.1 配置 1.2 实体类 1.3 继承JpaRepository接口 2. 批量新增 业务类 测试 3.

  • 问题内容: 我正在尝试在Glassfish上运行Java Web服务。有一些初始化代码可以设置一些变量并从Glassfish环境本身中检索一些信息。我在@WebService类内的静态初始化程序中具有该代码,但是此代码似乎被调用为时过早,它在WebService端点部署后立即运行,而我需要在成功部署整个Web服务后才能运行。 我尝试将代码移到WebService类的构造函数中,但是只有当我进入Te

  • 我是Vert的新手。我正在尝试实现一个小型REST API,它将数据存储在本地文件系统的JSON文件中。 到目前为止,我设法实现了REST API,因为Vertx在这方面有很好的文档记录。 我目前正在寻找的是如何在Vert. x中构建数据访问对象的示例。我怎样才能实现一个可以对包含JSON的文本文件执行粗鲁操作的版本? 你能给我举些例子吗?有什么提示吗? 更新1: 通过对文件进行CRUD操作,我想

  • 我们将在本章中讨论的基本CRUD操作是使用Angular 2从Web服务读取数据。 例子 (Example) 在这个例子中,我们将定义一个数据源,它是一个简单的产品json文件。 接下来,我们将定义一个服务,用于从json文件中读取数据。 然后,我们将在我们的主app.component.ts文件中使用此服务。 Step 1 - 首先让我们在Visual Studio代码中定义我们的product