WebAPI:在同一条路由上返回通用对象:它是 RESTFUL 吗? [关闭]
Posted
技术标签:
【中文标题】WebAPI:在同一条路由上返回通用对象:它是 RESTFUL 吗? [关闭]【英文标题】:WebAPI : Return Generic object on the same route : is it RESTFUL? [closed] 【发布时间】:2021-04-25 07:35:26 【问题描述】:这里是技术背景:WebApi .NET Core 2.2 和 Angular
这是业务上下文:在 Angular 应用程序上,管理员用户可以打开特定流程:例如,“更改地址”或“更改银行帐户”。所有这些操作都会创建一个“流程”(如工作流)。
当用户通过任务管理处理请求时,他会在不同的屏幕上填写不同的数据,他可以部分或全部保存数据。
在 api 上,我希望有一个单一的路线来获取进程中“正在进行”的数据:
api/process/id/data
例如,如果进程是“ChangeAddress”,我将返回ChangeAddressDataModel 如果流程是“ChangeBankAccount”,我将返回 ChangeBankAccountDataModel
[HttpGet("process/id/data")]
public IActionResult GetProcessData()
if(condition)
return Ok(changeBankAccountModel);
else if(conditon)
return Ok(changeAddressModel);
Angular dev,可以获取流程的类型和模型。
我的问题是:是 REST 吗?我们可以在良好的约定中做到这一点吗?
如果不是,我应该为每种类型的流程创建一个路线吗?喜欢:
[HttpGet("process/id/change-address-data")] // return NoContent or NotFound if its a ChangeBankAccount process or something else
[HttpGet("process/id/change-bank-account-data")]
信息:我们将有 20 多个流程类型。
谢谢
【问题讨论】:
【参考方案1】:您必须将输出转换为您要返回的对象
[HttpGet("process/id/data")]
public IActionResult GetProcessData()
if(condition)
//youe operations...
else if(conditon)
//youe operations...
return Ok<ClassName>(result);
在 asp.net mvc 中你必须设置这个文件
public static class WebApiConfig
public static void Register(HttpConfiguration config)
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/action/id",
defaults: new id = RouteParameter.Optional
);
并且在文件 Global.asax.cs 中:
protected void Application_Start()
GlobalConfiguration.Configure(WebApiConfig.Register);
查看最后这个链接:https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
【讨论】:
不,他不能。这既不是由 REST 也不是由 OpenApi 强制执行的 当你说“他不能”时,你是什么意思?谢谢以上是关于WebAPI:在同一条路由上返回通用对象:它是 RESTFUL 吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
[Effective JavaScript 笔记]第51条:在类数组对象上复用通用的数组方法
在 Linux 操作系统上部署在 Azure 的 WebApi 项目找不到路由