Я использую asp.net webapi и используя swagger для создания RestApi в приложении WPF через AutoRest. У меня возникла проблема выяснить, как использовать возвращенные данные, если есть ошибка.WebApi and Swagger
Мой контроллер:
// 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);
}
}
мне довелось иметь ошибки появляются в WebAPI на основе ошибки с AutoMapper, но это становилось поглотила. Он возвращает сообщение об ошибке в ответе, что отлично.
Вот текущий код 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 обращается к объекту.
Так что настоящий вопрос. Вот мой вызов службы из WPF в WebAPI
public async Task<int> SaveContract(ContractDto entity)
{
using (var db = new BuxtedConAPI())
{
var ret = await db.AddEditContractAsync(entity);
return (int)ret;
}
}
Если объект возвращается как я поднимаю, если произошла ошибка или если просто Int (с успехом) только вернулся.
Заранее спасибо. Scott
спасибо за возвращение ко мне. – scottsanpedro
Привет, Гаррет. Вы предлагаете в качестве окончательного ответа? Если так, я соглашусь. Я просто хотел удостовериться, что у меня не было ничего, что было бы довольно новым для asp. Спасибо Scott – scottsanpedro
Да, вы почти наверняка должны использовать 'default' для своих ответов об ошибках, а AutoRest будет генерировать исключения для них. –