Java 招摇过市:RESTAPI中的自定义操作

Java 招摇过市:RESTAPI中的自定义操作,java,rest,jax-rs,swagger,swagger-ui,Java,Rest,Jax Rs,Swagger,Swagger Ui,在我们的RESTAPI项目中,我们发现编写一个支持多个自定义操作的RESTAPI有点困难 可以在此资源上执行多种操作,例如验证,处理等。数据不会持久化到后端,相反,规则引擎(在后端)将对资源执行这些操作并返回结果 RESTURI:PUT http://:///REST/configuration 正文: { "action": "VALIDATE", "commonAttribute": "", "validateAttribute": "" } 或 对于VALI

在我们的RESTAPI项目中,我们发现编写一个支持多个自定义操作的RESTAPI有点困难

可以在此资源上执行多种操作,例如
验证
处理
等。数据不会持久化到后端,相反,规则引擎(在后端)将对资源执行这些操作并返回结果

RESTURI:
PUT http://:///REST/configuration

正文:

{
     "action": "VALIDATE",
     "commonAttribute": "",
     "validateAttribute": ""
}

对于
VALIDATE
操作,提供了公共属性和验证特定属性(
validateAttribute
)。
过程
操作的情况也类似

创建配置POJO是为了以以下方式表示输入:

public class Configuration {
    // will be modeled as enum
    private String action;

    private String commonAttribute;
    private String validateAttribute;
    private String processAttribute;

    // getters and setters
}
由于这两个操作是在一个RESTURI中实现的,因此swagger文档变得稍微复杂一些。在此URI下,请求主体的
模型架构
将同时包含
validateAttribute
processAttribute
,如下所示:

{
    "action": "string",
    "commonAttribute": "string",
    "validateAttribute": "string",
    "processAttribute": "string"
}
这两个属性的存在都会给用户带来某种混乱,即使口头文档(在swagger中)中可以包含一些细节,例如哪些属性的操作

注1:根据REST设计指南,这些操作未包含在REST URI路径中。 注2:由于我们的操作本质上是幂等的,所以选择了PUT操作而不是POST操作


我正在寻找指南,以准确、简洁的方式在《狂妄博士》中表达这些行为及其属性。有没有更好的方法来设计这些API或大摇大摆地表示它们。

您好,您对此有什么答案吗?@NetSurgeon我还没有一个合适的解决方案。进一步分析后,我意识到较旧版本的swagger UI(非jquery)支持这种行为。由于新版本不支持此功能,我修改了swagger UI逻辑以处理此场景。(Swagger 1.2规范支持这一点,并返回适当的响应)。它是执行附加处理以忽略多个列表的UI。您好,您对此有何回答?@NetSurgeon我没有适当的解决方案。进一步分析后,我意识到较旧版本的swagger UI(非jquery)支持这种行为。由于新版本不支持此功能,我修改了swagger UI逻辑以处理此场景。(Swagger 1.2规范支持这一点,并返回适当的响应)。它是执行附加处理以忽略多个列表的UI。您好,您对此有何回答?@NetSurgeon我没有适当的解决方案。进一步分析后,我意识到较旧版本的swagger UI(非jquery)支持这种行为。由于新版本不支持此功能,我修改了swagger UI逻辑以处理此场景。(Swagger 1.2规范支持这一点,并返回适当的响应)。它是执行附加处理以忽略多个列表的UI。
{
    "action": "string",
    "commonAttribute": "string",
    "validateAttribute": "string",
    "processAttribute": "string"
}