asp.net webapi를 사용하고 Swagger를 사용하여 AutoRest를 통해 WPF 앱 내 RestApi를 만듭니다. 오류가있는 경우 반환 된 데이터를 소비하는 방법을 파악하는 데 문제가 있습니다.WebApi 및 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);
}
}
AutoMapper의 오류를 기반으로 WebApi에 오류가 표시되지만 삼켰습니다. 응답에서 오류 메시지가 반환됩니다.
다음은이 호출에 대한 현재 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();
}
예상대로 int가 있습니다. 주석 처리를 제거한 경우
//[SwaggerResponse(HttpStatusCode.InternalServerError ,Type = typeof(HttpError))]
int 반환 유형이 객체로 바뀝니다.
그래서 진짜 질문입니다. 다음은 WebApi 목적은 오류가 발생한 경우 또는 (성공과) 간단한 INT가 바로 반환되는 경우 내가 데리러 어떻게 반환되는 경우
public async Task<int> SaveContract(ContractDto entity)
{
using (var db = new BuxtedConAPI())
{
var ret = await db.AddEditContractAsync(entity);
return (int)ret;
}
}
에 WPF에서 내 서비스 호출이다.
미리 감사드립니다. Scott
나에게 다시 연락해 주셔서 감사합니다. – scottsanpedro
안녕 개렛. 당신은 최종 답변으로 제안하고 있습니까? 그렇다면 받아 들일 것입니다. 나는 asp에 상당히 새로운 것을 놓치지 않았는지 확인하고 싶었다. 감사합니다 Scott – scottsanpedro
예, 오류 응답에'default'를 사용해야하고, AutoRest가 예외를 생성합니다. –