WebApi 和 Swagger
WebApi and Swagger
我正在使用 asp.net webapi 并使用 swagger 通过 AutoRest 在 WPF 应用程序中创建 RestApi。
如果出现错误,我无法确定如何使用 returned 数据。
我的控制器如下;
// POST: api/Personnel
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
[SwaggerOperation("AddEditContract")]
[SwaggerResponse(HttpStatusCode.OK, Description = "Add/Edit a Contract", Type =typeof(int))]
public IHttpActionResult Post(ContractDto value)
{
try
{
var _contractsService = new Business.ContractsService();
var contractToSave = _contractsService.GetContractsById(value.CC_Id);
if (contractToSave == null)
{
return NotFound();
}
var ret = _contractsService.SaveContract(value);
if (ret > 0)
{
return Ok(ret);
}
else
{
return BadRequest();
}
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
基于 AutoMapper 的错误,我碰巧在 WebApi 中出现错误,但它被吞没了。它在响应中 return 显示一条错误消息,这很棒。
这是此调用的当前 AutoRest 代码。
public static int? AddEditContract(this IBuxtedConAPI operations, ContractDto value)
{
return Task.Factory.StartNew(s => ((IBuxtedConAPI)s).AddEditContractAsync(value), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult();
}
如您所见,它需要一个整数。如果我取消注释
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
int return类型转object
所以真正的问题。
这是我从 WPF 到 WebApi
的服务调用
public async Task<int> SaveContract(ContractDto entity)
{
using (var db = new BuxtedConAPI())
{
var ret = await db.AddEditContractAsync(entity);
return (int)ret;
}
}
如果一个对象被 returned 如果发生错误或者简单的 int(成功)只是 returned 我该如何选择。
提前致谢。
斯科特
你能post你正在生成并传递给 AutoRest 的 swagger 文件吗?
return 类型变为 object
(或所有可能的响应之间共享的任何公共基础 class)的原因是因为 AutoRest 将显式定义的响应视为 return 值。异常仅用于 default
响应。
我们正在研究指定将生成适当异常的多个错误响应的方法。
我正在使用 asp.net webapi 并使用 swagger 通过 AutoRest 在 WPF 应用程序中创建 RestApi。 如果出现错误,我无法确定如何使用 returned 数据。
我的控制器如下;
// POST: api/Personnel
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
[SwaggerOperation("AddEditContract")]
[SwaggerResponse(HttpStatusCode.OK, Description = "Add/Edit a Contract", Type =typeof(int))]
public IHttpActionResult Post(ContractDto value)
{
try
{
var _contractsService = new Business.ContractsService();
var contractToSave = _contractsService.GetContractsById(value.CC_Id);
if (contractToSave == null)
{
return NotFound();
}
var ret = _contractsService.SaveContract(value);
if (ret > 0)
{
return Ok(ret);
}
else
{
return BadRequest();
}
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
基于 AutoMapper 的错误,我碰巧在 WebApi 中出现错误,但它被吞没了。它在响应中 return 显示一条错误消息,这很棒。
这是此调用的当前 AutoRest 代码。
public static int? AddEditContract(this IBuxtedConAPI operations, ContractDto value)
{
return Task.Factory.StartNew(s => ((IBuxtedConAPI)s).AddEditContractAsync(value), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult();
}
如您所见,它需要一个整数。如果我取消注释
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
int return类型转object
所以真正的问题。 这是我从 WPF 到 WebApi
的服务调用 public async Task<int> SaveContract(ContractDto entity)
{
using (var db = new BuxtedConAPI())
{
var ret = await db.AddEditContractAsync(entity);
return (int)ret;
}
}
如果一个对象被 returned 如果发生错误或者简单的 int(成功)只是 returned 我该如何选择。
提前致谢。 斯科特
你能post你正在生成并传递给 AutoRest 的 swagger 文件吗?
return 类型变为 object
(或所有可能的响应之间共享的任何公共基础 class)的原因是因为 AutoRest 将显式定义的响应视为 return 值。异常仅用于 default
响应。
我们正在研究指定将生成适当异常的多个错误响应的方法。