c#,web api,swashbuckler / swagger

时间:2016-04-27 23:30:49

标签: rest asp.net-web-api2 swagger tph

这是我的第一个网络API,第一个网络应用程序,并且我第一次使用swagbuckler swagger。 我在设备数据库表中使用了TPH 例如,我有一个基类,称为设备,有几个继承自设备的子类。 (这不是真正的代码,所以我没有把所有的公众等等) 正如我所期望的那样,当我在浏览器中运行swagger时的模型描述,只返回设备类的模型 我已经搜索了如何显示所有可能的模型,但无法理解回复,因为它们与c#或api控制器没有关联,使用文档注释,或者它们是为那些为比我更了解这一点 是否有人能够发布一个例子,或者请指向一个初学者教程,关于如何让swagger显示所有可能的模型。我必须编写几个不同的api调用来解决这个问题,这样才能显示出模型 感谢

class equipment
{
  public int id{get;set;}
  public int foo{get;set;}
  public int bar{get;set;}
}

class bucket : equipment
{      
  public int booboo{get;set;}
}
class mop : equipment
{
  public int lala{get;set;}
}


// equipmentcontroller class get function

/// <summary>
/// Returns a piece of equipment.<br/>
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Route(@"{id:int}"), ResponseType(typeof(equipment))]
public IHttpActionResult GetMop(int id)
{
  return result != null ? (IHttpActionResult)Ok(GetMop[id]) : NotFound();
}

1 个答案:

答案 0 :(得分:1)

你所建议的是不可能的。在Swagger中,操作响应的定义基本上是将不同HTTP状态代码映射到特定响应对象。 (看看http://swagger.io/specification/#responsesObject

您无法表示操作的200 OK可以返回表示拖把的响应或表示存储桶的响应。

你提到&#34;我必须编写几个不同的api调用来解决这个问题,这样才能显示模型。&#34;,这是我对RESTful的期望API。不同类型的资源由不同的端点处理。