在我的场景中,我发现自己创建了一个REST资源,表示要由工作流引擎运行的任务。我创建了以下资源:
[POST|GET] /api/tasks
任务具有以下形式:
{
"Id": 123456789,
"Web": "https://foo/webfe/tasks/123456789",
"Description": {
"Scenario": "TaskA",
"Parameters": {
"GlobalParameter": "SomeCommonThing",
"TaskASpecificParameter1": "SomeThingOnlyMeaningfulForTaskA",
"TaskASpecificParameter2": "SomeOtherThingOnlyMeaningfulForTaskA"
}
}
}
值得注意的是,我有 ?. Description.Parameters []
此参数字段本质上是一个键值字典,但在逻辑上以与?.Description.Scenario的值直接相关的方式进行模式化。
这是在REST中有意义的东西还是一个坏主意。作为链接资源,这会更有意义吗?子资源怎么样?
奖金问题:
如何使用Swagger / Swashbuckle以可为客户端发现的方式在C#/ ASP.NET中执行此操作?
答案 0 :(得分:0)
可能有助于将其可视化,就像为数据库模式创建它一样。在“任务”表中,您不会将参数列表作为可能无限数量的列。你将有两个表,一个用于任务,一个用于参数,你将拥有一个从参数到任务的外键(多对一)。以同样的方式,您将拥有一个{J}接受TaskId并为您提供相关参数的API端点。
在此之后,您可以通过api/Parameters
或/api/Tasks/{TaskId}/Parameters
在API中轻松实现它,其中/api/Parameters?TaskId={TaskId}
会返回单个参数。