Вопрос такой же, как этот . Я хочу получить объект из IActionResult со связанным статусом html, но Swagger покажет мне сообщение «ОК» вместо связанного статуса.
Я искал много часов, чтобы найти ошибку в конфигурациях, и я не нашел ничего, чтобы решить проблему. Я покажу вам код:
Вот результат IActionResult:
[HttpPut("updateuserpricingplan")]
[ProducesResponseType(200)]
[ProducesResponseType(400, Type = typeof(ServiceValidationResult))]
public async Task<IActionResult> UpdateSelection([FromBody]UpdatePricingPlanModel model)
{
var user = await _userService.GetSignedIdUser(this.HttpContext);
var result = await _userService.UpdateUserPricingPlan(user, model.PricingPlanId, _settingService, model.Code);
if (result.Succeeded)
return Ok();
return new ObjectResult(result) { StatusCode = 400 };
}
Интересно узнать, что я вижу результат и код состояния
на вкладке Сеть / Ответ в Google Chrome.
Вот как я написал подписку
this.pricingPlanService.updateSelection(model)
.subscribe(res => {
console.log(res.result);
}, err => { // <== I got "OK" result as string and nothing else
console.log(err.status);
console.log(err.response);
}, () => {
this.sessionService.updatePricingPlan(selectedPricingPlan.id);
});
Теперь вот версии, которые я использую:
- NSwagStudio: 12.1.0.0
- Угловой: 7.0.4
- ASP.net Core 2.2.4
Если это могло бы помочь, здесь код, который генерируется NSwagStudio для updateSelection. Обратите внимание, что if (response_ instanceof HttpResponseBase)
швы всегда ложны.
updateSelection(model: UpdatePricingPlanModel): Observable<SwaggerResponse<void>> {
let url_ = this.baseUrl + "/api/PricingPlan/updateuserpricingplan";
url_ = url_.replace(/[?&]$/, "");
const content_ = JSON.stringify(model);
let options_ : any = {
body: content_,
observe: "response",
responseType: "blob",
headers: new HttpHeaders({
"Content-Type": "application/json",
})
};
return this.http.request("put", url_, options_).pipe(_observableMergeMap((response_ : any) => {
return this.processUpdateSelection(response_);
})).pipe(_observableCatch((response_: any) => {
if (response_ instanceof HttpResponseBase) {
try {
return this.processUpdateSelection(<any>response_);
} catch (e) {
return <Observable<SwaggerResponse<void>>><any>_observableThrow(e);
}
} else
return <Observable<SwaggerResponse<void>>><any>_observableThrow(response_);
}));
}
protected processUpdateSelection(response: HttpResponseBase): Observable<SwaggerResponse<void>> {
const status = response.status;
const responseBlob =
response instanceof HttpResponse ? response.body :
(<any>response).error instanceof Blob ? (<any>response).error : undefined;
let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};
if (status === 200) {
return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {
return _observableOf<SwaggerResponse<void>>(new SwaggerResponse(status, _headers, <any>null));
}));
} else if (status === 400) {
return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {
let result400: any = null;
let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver);
result400 = resultData400 ? ServiceValidationResult.fromJS(resultData400) : <any>null;
return throwException("A server error occurred.", status, _responseText, _headers, result400);
}));
} else if (status !== 200 && status !== 204) {
return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {
return throwException("An unexpected server error occurred.", status, _responseText, _headers);
}));
}
return _observableOf<SwaggerResponse<void>>(new SwaggerResponse(status, _headers, <any>null));
}
Видите ли вы какую-либо ошибку или неправильную конфигурацию?
Спасибо за любую помощь,