Мы создаем реализацию C# самостоятельно разработанного веб-API, используя стандартный метод Visual Studio «Добавить… подключенную службу». Этот API возвращает статус 204, если запрос был синтаксически верным, но данные с данным идентификатором не найдены. Мы используем TypeSpec для определения API.
Например, следующий метод:
Код: Выделить всё
@route("/{productionOrderNumber}")
@get getOrderData(
@path productionOrderNumber: string
): ProductionOrder | NoContentResponse | ProblemDetail;
Похоже, что NSwag не обрабатывает код состояния 204 (нет контента) как положительный ответ, поэтому вместо того, чтобы сгенерированный метод возвращал значение null, он всегда выдает исключение. Такое поведение можно ясно понять после прочтения метода, сгенерированного NSwag.
Вот соответствующая часть:
Код: Выделить всё
if (status_ == 204)
{
string responseText_ = ( response_.Content == null ) ? string.Empty : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
throw new ApiException("There is no content to send for this request, but the headers may be useful.", status_, responseText_, headers_, null);
}
Есть ли способ перенастроить NSwag и заставить его воспринимать статус 204 как положительный ответ. Я не хочу изменять автоматически сгенерированный код, поскольку он может часто меняться.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... ual-studio