gpt4 book ai didi

api - 规则引擎(无状态引擎)的 REST URI

转载 作者:行者123 更新时间:2023-12-03 01:03:29 25 4
gpt4 key购买 nike

我需要一些为规则引擎设计 REST URI 的指导。定义了一组规则并以XML文件的形式存储在后端系统中。这些规则被分为不同的类别,并且根据用户指定的类别执行一组规则。用户将一组用户选择/选项和类别作为输入传递到规则引擎。规则引擎针对用户选择/选项执行属于该类别的规则。这些是类似流程/计算的操作,不涉及将用户状态持久保存到系统中。总的来说,用户状态不是在规则引擎中维护的……即无状态规则引擎。

我正在尝试设计用于规则引擎执行的 REST API(规则创建部分已经处理完毕):

  1. 该操作不会创建、更新、删除任何服务器端资源。
  2. 规则根据用户选择执行。
  3. 用户选择可能很复杂(层次结构),并且无法建模为 URI 参数。

请您指导我们考虑上述方面来设计 REST URI 模式。

要获取属于某个类别的规则:

GET /rule_category/{id}

在规则上下文中处理用户选择(由规则引擎执行规则):

POST /rule_engine
BODY to contain a JSON structure with rule category & user selections

请就上述 URI 设计以及上述用例的任何其他可能的 URI 提供您的建议。规则执行 URI 是否应该使用 PUT/POST?

编辑 1:添加封装规则类别和用户选择信息的示例 JSON/XML 结构:

{
processdata:{
rulecategory:'ruleCat1',
userselections:{
userselection:[
{
item:'us1'
},
{
item:'us2'
},
{
item:'us3',
customselection:{
value:'cs1'
}
}
]
}
}
}

<ProcessData RuleCategory="ruleCat1">
<UserSelections>
<UserSelection Item="us1"/>
<UserSelection Item="us2"/>
<UserSelection Item="us3">
<CustomSelection Value="cs1"/>
</UserSelection>
</UserSelections>

最佳答案

REST 不是远程过程调用 (RPC)。 REST 是关于资源的。

如果您想要一个处理计算的 RESTful API,请将计算建模为资源。

创建新的计算资源

请求

POST /computations
Content-Type: application/json

{
// the selected rules etc.
}

回应

201 Created
Location: /computations/748A9FC0-B74E-11E4-8822-4D7FDD9DA696

其中748A9FC0-B74E-11E4-8822-4D7FDD9DA696是服务器生成的此计算的ID。

获取计算状态

请求

GET /computations/748A9FC0-B74E-11E4-8822-4D7FDD9DA696

响应:仍在计算

200 OK
Content-Type: application/json

{
"id": "748A9FC0-B74E-11E4-8822-4D7FDD9DA696",
"data": { ... },
"state": "computing"
}

回应:完成

200 OK
Content-Type: application/json

{
"id": "748A9FC0-B74E-11E4-8822-4D7FDD9DA696",
"data": { ... },
"state": "finished",
"result": {
// details about the result
}
}

关于api - 规则引擎(无状态引擎)的 REST URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28578816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com