首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebAPI :在相同的路径上返回通用对象:它是RESTFUL的吗?

WebAPI :在相同的路径上返回通用对象:它是RESTFUL的吗?
EN

Stack Overflow用户
提问于 2021-01-20 21:31:41
回答 1查看 44关注 0票数 1

以下是技术背景: WebApi、.NET、Core2.2和Angular

以下是业务上下文:在角度应用程序上,管理员用户可以打开一个特定的进程:例如,“更改地址”或“更改银行帐户”。所有这些操作都创建了一个“流程”(如工作流)。

当用户通过任务管理处理请求时,他将拥有不同的屏幕,需要填写不同的数据,并且可以部分或完整地保存数据。

在api上,我希望有一条获得“正在进行的”数据的单一路径:

代码语言:javascript
复制
api/process/{id}/data

例如,如果进程是"ChangeAddress",我将返回ChangeAddressDataModel,如果进程是"ChangeBankAccount“,则返回ChangeBankAccountDataModel。

代码语言:javascript
复制
[HttpGet("process/{id}/data")]
public IActionResult GetProcessData()
{
    if(condition)
    {
        return Ok(changeBankAccountModel);
    }

    else if(conditon)
    {
        return Ok(changeAddressModel);
    }
}

角锥开发,可以得到工艺的类型和铸造模型。

我的问题是:休息吗?我们能在好的会议上这样做吗?

如果不是,我是否应该为每种类型的流程创建一条路径?比如:

代码语言:javascript
复制
[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+处理类型。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-01-20 22:59:12

必须将输出转换为要返回的对象。

代码语言:javascript
复制
[HttpGet("process/{id}/data")]
public IActionResult GetProcessData()
{
    if(condition)
    {
         //youe operations...
    }
    else if(conditon)
    {
        //youe operations...
    }
    
    return Ok<ClassName>(result);
}

在asp.net mvc中,您必须设置这个文件。

代码语言:javascript
复制
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中:

代码语言:javascript
复制
protected void Application_Start()
{
   GlobalConfiguration.Configure(WebApiConfig.Register);
}

检查结尾处的链接:https://learn.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65817984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档