c# - 调用 .NET Core 中缺少的端点会产生 404,但也可以作为对 Angular 的响应
问题描述
调用我的后端,我忘记了我们更改了端点的名称,所以我得到了 404。但是,我注意到在这种情况下提供的文本不是Not Found而是OK。如图所示,错误消息中的(正确)状态代码与(错误)状态名称之间缺乏相关性。
起初,我怀疑后端使用了类似这样的东西,忘记正确分类响应的状态码。然后,我意识到这是不可能的,因为端点不存在,所以内容不可能是由于在那里执行的任何事情。
//[HttpGet("coordinates/{id}")]
[HttpGet("coords/{id}")]
public async Task<ActionResult> GetCoordinates(int id)
{
...
// if (output == null)
// return NotFound(id);
return Ok(output);
}
我需要帮助来诊断问题,目前我不确定是后端需要触摸还是发生在 Angular 中。像这样的书,联系服务器的代码非常直接。
getCoordinates(id: number): Observable<boolean> {
return this.http
.get<boolean>(this.url + "coordinates/" + id);
}
然后像这样在组件中使用 observable(布尔值在 GET 上可能令人惊讶,但在我正在处理的实际情况下它是有意义的)。
onSave() {
this.service.getCoordinates(this.id)
.subscribe(
suc => this.router.navigate([this.origin]),
err => console.log(err));
}
错误处理响应的可能点在哪里?或者,在某种程度上,我不知道某种还不错的状态?我不确定在这里做出判断。
我只发现了这个,它只是证实了某种可疑的预感,而不是提供关于什么的暗示。此外,它是 PHP,所以我不确定相关性。
解决方案
根据RFC 7540 文档,
对于 HTTP/2 响应,定义了一个带有 HTTP 状态代码字段的“:status”伪头字段
(参见 [RFC7231],
第 6 节)。这个伪头域必须包含在所有
响应中;否则,响应格式错误(第 8.1.2.6 节)。HTTP/2 没有定义携带
包含在 HTTP/1.1 状态行中的版本或原因短语的方法。
这是关于相同的讨论:https ://github.com/whatwg/fetch/issues/599#issue-255768557 。
Fetch
规范简单地定义statusText
为status message
值,除非另有说明,否则为OK
.对于 HTTP/2,似乎可以通过多种方式解释状态消息:
- 空字符串 - 因为没有理由短语“OK”
- 因为这始终是默认的(虽然有 404 OK 会很奇怪)实现定义
- 例如状态代码的一些默认原因文本
推荐阅读
- pycharm - 如何在 PyCharm 中禁用帮助弹出窗口
- angular - mat-tooltip 空白,多行
- r - 如何在情节中使用多个组,但只有定义数量的图例组
- c++ - 提供正确的 std::copy_if 谓词
- javascript - React Hook useCallback 缺少依赖项:'Id'。包括它或删除依赖数组
- django - 如何从“选择选项”表单中传递两个自定义属性值以在 django 中查看
- wordpress - 如何将摘录长度从字符更改为单词
- sapui5 - 显示通用消息而不是特定于约束的消息
- arrays - 如果我将指针 1 分配为等于指针 2,然后更改指针 2,指针 1 会改变吗?
- python - PySpark 为 DecimalType 列创建直方图数据框