多个异常状态代码,状态文本为"ok"



我正在研究一个小项目中的异常处理程序,无论异常或异常代码是什么,HTTP响应总是返回一个状态文本"ok">

控制台日志.net core 5控制器类:

using API.Data;
using API.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers
{
public class BuggyController : BaseApiController
{
private readonly ApplicationDbContext _context;
public BuggyController(ApplicationDbContext context)
{
_context = context;
}
[Authorize]
[HttpGet("auth")]
public ActionResult<string> GetSecret()
{
return "secret test";
}
[HttpGet("not-found")]
public ActionResult<AppUser> GetNotFound()
{
var thing = _context.Users.Find(-1);
if (thing == null)
return NotFound();
else
return thing;
}
[HttpGet("server-error")]
public ActionResult<string> GetServerError()
{
var thing = _context.Users.Find(-1);
var thingToReturn = thing.ToString();
return thingToReturn;
}
[HttpGet("bad-request")]
public ActionResult<string> GetBadRequest()
{
return BadRequest("This was not a good request");
}
}
}

测试异常的angular组件:

import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-test-errors',
templateUrl: './test-errors.component.html',
styleUrls: ['./test-errors.component.css']
})
export class TestErrorsComponent implements OnInit {
baseUrl = "https://localhost:5001/api/";
constructor(private http: HttpClient) { }
ngOnInit(): void {
}
get404Error() {
this.http.get(this.baseUrl + 'buggy/not-found').subscribe(response => {
console.log(response)

}, error => {
console.log(error);
})  
}
get400ValidationError() {
this.http.post(this.baseUrl + 'buggy/register', {}).subscribe(response => {
console.log(response)

}, error => {
console.log(error);
})
}

get400Error() {
this.http.get(this.baseUrl + 'buggy/bad-request').subscribe(response => {
console.log(response)

}, error => {
console.log(error);
})
}
get500Error() {
this.http.get(this.baseUrl + 'buggy/server-error').subscribe(response => {
console.log(response)

}, error => {
console.log(error);
})
}
get401Error() {
this.http.get(this.baseUrl + 'buggy/auth').subscribe(response => {
console.log(response)

}, error => {
console.log(error);
})
}
}

我将非常感谢一些帮助,为什么我得到的状态文本为ok。我再三检查了,还是一样。提前谢谢你

我在Udemy的课程QA上找到了答案。它与http/2和angular客户端本身的默认值有关。简而言之,在http/2请求中,statusText从响应中删除,angular用默认数据(statusText=Ok)填充缺失的信息。这也是其他地方引用的一个问题

课程链接主要参考

相关内容