gpt4 book ai didi

c# - 我应该在自定义 API 中返回哪个 HttpStatus 代码?

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:07 24 4
gpt4 key购买 nike

<分区>

场景

我加入了一个用 Java 开发一些 API REST 的团队。作为 .Net 开发人员,我正在开发使用该 API 的客户端,我正在使用 RestSharp。有时我在 Java 端开发,有时在 .Net 端开发。分析 Java 代码,我看到当出现问题时,例如异常或失败的业务规则,他们(Java 编码器)返回 HTTP 状态代码 500(错误)。看这个例子:

try {
loteIde = input.getFormDataPart("ideLote", String.class, Class.class);
} catch (IOException e) {
return Response.status(400).entity(errorHandler.getJsonError(ErrorMsgs.ERRO_INTERNO)).build();
}

在上面的示例中,如果客户端(API 调用者)没有将参数“ideLote”传递给请求,它们将返回 400 错误。

否则,当缺少某些业务实体时,它们会返回 404 HTTP 错误 (NotFound)。看:

Lote lote = loteDAO.findById(loteIde);
if (lote == null) {
return Response.status(404).entity(errorHandler.getJsonError(ErrorMsgs.NAO_POSSIVEL_IDENTIFICAR_LOTE)).build();
}

他们找不到实体 (Lote),所以他们返回 400 HTTP 状态错误。

在我的概念中,HTTP 状态表示 HTTP 请求的状态,而不是某些业务规则的状态,因此,在这两种情况下,它们都应该返回 200 HTTP 状态代码(没有错发生在 Http 请求中),以及关于业务规则中发生的事情的一些其他信息(可能是 XML 或 JSON),例如,他们可以像这样返回给我:

{
"IdCertificado": null,
"Errors": [
{
"Codigo": "0001",
"Mensagem": "You should inform the ideLote property"
}],
"TemErro": true
}

问题

是我的概念错了吗? Web API 的默认行为应该是什么?

PS1:this答案同意我的构想,并用天启和鸽子来解释它:)。

PS2:欢迎更多引用。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com