标签: http-status-codes

在数据库中找不到数据时的 HTTP 状态代码

我试图了解在以下用例中使用哪个 Http 状态代码

  1. 用户尝试使用GET输入在端点上执行操作ID
  2. 所请求的数据在数据库中不可用。

如果服务发回:

  1. 404 - Not Found
    由于在数据库中找不到数据
  2. 400 - Bad Request
    由于输入请求中的数据无效或存在于数据库中
  3. 200 - OKnull回应
  4. 200 - OK带有错误消息
    在这种情况下,我们可以使用标准错误消息,以及涵盖所有响应的契约200 OK(如下所示)。
 BaseResponse {
  Errors [{
    Message: "Data Not Found"
  }],
  Response: null
 }
Run Code Online (Sandbox Code Playgroud)

遵循哪种正确(或标准)方法?

提前致谢。

api standards http-status-codes

3
推荐指数
1
解决办法
2万
查看次数

对于订阅取消异常,哪种 HTTP 状态代码是正确的?

HTTP status code对于例外,哪一个是正确的Subscription Canceled

当用户尝试访问某个页面时,我需要抛出异常。

我检查了一些状态,例如Payment Required,但不满足要求。有什么建议吗?

java rest http http-status-codes spring-boot

3
推荐指数
1
解决办法
2278
查看次数

Asp.net Core 3.1 Web Api 从 IActionResult 返回自定义错误消息

是否可以从 Asp.Net Core 3.1 Web Api 返回自定义错误消息给客户端?我尝试了几种不同的方法来设置“ReasonPhrase”,但没有成功。我尝试过使用StatusCode

return StatusCode(406, "Employee already exists");
Run Code Online (Sandbox Code Playgroud)

我尝试使用 HttpResponseMessage 返回:

    HttpResponseMessage msg = new HttpResponseMessage();
    msg.StatusCode = HttpStatusCode.NotAcceptable;
    msg.ReasonPhrase = "Employee alredy exists";
    return (IActionResult)msg;
Run Code Online (Sandbox Code Playgroud)

我试图向客户端返回一条消息,调用该员工已存在的方法:

    public async Task<IActionResult> CreateEmployee([FromBody] EmployeeImport Employee)
    {
        var exists = await employeeService.CheckForExistingEmployee(Employee);
        if (exists > 0)
        {

            //return StatusCode(406, "Employee already exists");
            HttpResponseMessage msg = new HttpResponseMessage();
            msg.StatusCode = HttpStatusCode.NotAcceptable;
            msg.ReasonPhrase = "Employee already exists";
            return (IActionResult)msg;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是客户端中的代码:

    public async Task<ActionResult>AddEmployee(EmployeeImport employee)
    {
        var message …
Run Code Online (Sandbox Code Playgroud)

http-status-codes http-status-code-400 asp.net-core asp.net-core-webapi

3
推荐指数
1
解决办法
4056
查看次数

解析用于与API交互的HTTP状态代码

我正在PHP中构建一个脚本来与API交互,并且需要能够解析API给我的HTTP状态代码.在大多数情况下,它提供以下响应之一:

HTTP/1.1 401 Unauthorized
HTTP/1.1 403 Forbidden 
HTTP/1.1 404 Not Found 
HTTP/1.1 410 Gone 
Run Code Online (Sandbox Code Playgroud)

我需要能够识别正在给出的响应,并且,如果它的401或410,继续,但是,如果它是401或403,在连续几次之后跟踪并关闭脚本(因为我超过了当天的通话限制.

我的代码非常简单:

for($i = $start;$i < $end;$i++)
{
     // construct the API url
     $url = $base_url.$i.$end_url;
     // make sure that the file is accessible
     if($info = json_decode(file_get_contents($url)))
     {
        // process retrieved data
     } else {
        // what do I put here?
     }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道在'else'循环中放什么.我正在使用CodeIgniter框架,如果有人知道任何使用的快捷方式.此外,我愿意使用cURL,但从未有过.

php curl http-status-codes

2
推荐指数
1
解决办法
3267
查看次数

PHP标题('Location:'.$ url)http1.0 vs http1.1 vs?

我正在使用PHP进行一些重定向,例如:

header('Location: '.$url);
Run Code Online (Sandbox Code Playgroud)

但现在我需要使用其他一些状态代码进行重定向.

我应该http1.0或http1.1.或者我们已经在http2.0或更高版本?

两者的状态代码是否相同?

所以,假设我想使用状态代码404(未找到)重定向​​.

我可以这样做:

header('HTTP/1.1 404 Not Found');
header('Location: '.$url);
Run Code Online (Sandbox Code Playgroud)

还是有:

header('HTTP/2.0 404 Not Found');
header('Location: '.$url);
Run Code Online (Sandbox Code Playgroud)

php redirect http-status-codes

2
推荐指数
1
解决办法
1307
查看次数

返回身体和Http 204状态是否有效?

我们目前正在努力达到OData标准:

http://www.odata.org/developers/protocols/operations

根据此标准,如果对数据执行PUT操作,则应返回204状态代码.标准说:

当处理PUT请求服务器返回状态204(无内容)以指示成功时,不需要响应主体.

现在,根据其他人在其他地方读到的内容,有些地方声称,如果你要返回204,你绝对不应该回复一个反应机构 - 这不是一个是否需要的问题.

问题是我们需要返回一个身体.在这种情况下,我们正在对一批项目执行更新查询,并且部分成功(即一些更新,一些不更新)是可能的.我们想告诉客户失败是什么,而响应机构是我能想到的唯一方法.

那么这样做的"正确"方法是什么呢?我应该甩掉W3C并返回一具尸体吗?或者我应该诋毁OData并返回不同的响应代码?还是有其他可能吗?

http http-status-codes odata

2
推荐指数
2
解决办法
4701
查看次数

“客户要求的格式错误”的哪个状态码?

哪种HTTP状态代码最适合用于“客户端请求的格式错误”,例如,客户端请求format=json的数据只能以XML格式提供?我倾向于使用406,但这是指Acceptheders,而格式是在我的用例中作为查询字符串中的参数给出的。

406这里的代码正确吗?

谢谢

http http-status-codes http-status-code-406

2
推荐指数
1
解决办法
2550
查看次数

如何在'MultiValueDictKeyError`中使用Django中的400响应?

从瓶的到来,request.args[key]request.form[key] 与400回应如果该键不存在.这具有快速失败的良好特性.

在Django中,request.GET[key]request.FORM[key]提出HttpResponseBadRequest如果该键不存在,这会导致你的API与未处理的,如果一个500个响应状态.我已经看到其他答案推荐request.GET.get(key),但是无意中放松了API合同,这可能允许客户端漏洞漏掉(例如查询参数拼写错误,忘记包含参数等).

我可以手动检查所需的查询参数:

arg1 = request.POST.get('arg1')
if not arg1:
    raise HttpBadRequest('"arg1" was not provided.')

arg2 = request.POST.get('arg2')
if not arg2:
    raise HttpBadRequest('"arg1" was not provided.')

arg3 = request.POST.get('arg3')
if not arg3:
    raise HttpBadRequest('"arg3" was not provided.')
Run Code Online (Sandbox Code Playgroud)

但这留下了很多错误的余地.(你注意到错字吗?)

我可以手动处理HttpResponseBadRequest:

def my_view(request):
    try:
        arg1 = request.POST['arg1']
        arg2 = request.POST['arg2']
        arg3 = request.POST['arg3']
    except MultiValueDictKeyError as ex:
        raise HttpBadRequest('"{}" was not provided.'.format(ex))
Run Code Online (Sandbox Code Playgroud)

但是现在你在写视图时还有一件事需要记住.

将上面的例子与Flask的等价物进行比较: …

python forms django http-status-codes

2
推荐指数
1
解决办法
174
查看次数

无效格式的HTTP状态代码

我们的系统正在接受文本文件上传,并且应该具有预定的行数。如果行数不匹配,我想向用户发送排序警告,要求确认是否仍然要上传。

我是否可以为这样的事情使用特定的状态码?

http http-status-codes http-headers

2
推荐指数
1
解决办法
3956
查看次数

REST:根据RFC 2616 HTTP/1.1规范的正确响应状态?

我已经浏览了RFC-2616上的HTTP/1.1协议规范,并且我试图了解在调用特定REST方法时应该返回哪个状态代码.至于我研究了协议(链接),我试图将REST方法解析为正确的状态代码:

  • 得到
    • 如果找到至少一个资源,则返回200(ok).
    • 如果没有找到任何东西(即返回空列表),我应该返回204(未找到)吗?
  • POST
    • 如果新的资源已添加到orign,则返回与PUT方法相同的201(已创建)的差异
    • 基于通用建议,POST可用于创建新的资源,PUT用于修改现有资源.如果我决定遵循这个建议,那么在尝试修改现有资源时我应该返回什么.POST api/v1/person/1
  • 补丁
    • 像PUT方法一样,差异并不像PUT那样取代整个资源,但它部分地修改了资源
    • 在W3协议RFC-2616中没有关于PATCH REST方法的说法,是否应该像PUT那样对待它?
  • 删除
    • 如果资源被删除则返回200(ok),如果没有要删除的资源(未找到id ),则返回[204(未找到)].在REST实施的情况下,它是否复制GET响应原则?

我的"表"是否正确(特别是带引号的语句??是正确的,只有GET应该在正文中返回请求本身,其余的方法只是一个URI链接到修改后的资源(新添加,修改..)包括在标题?

我的理解是否正确,是否存在另一个正式描述REST方法的来源,建议(或者我们"有义务")遵循这些来源?我对各种各样的来源非常困惑,这给了我对每个方法以及这个非常详细的RFC-2616协议的不同答案.

最好的是存在一个表格,简要而清楚地描述所有这5种方法,其中包括返回状态,正文内容和标题的可能性.

rest http rfc http-status-codes http-1.1

2
推荐指数
1
解决办法
481
查看次数