我想知道HTTP 200 OK在服务器端发生错误并且响应正文内部出现一些错误时返回是否正确.
例:
http GEThttp 200 OK在响应中返回错误状态代码(例如,{"status":"some error occured"}是不是正确的行为?我们不应该改变状态代码吗?
我们正在设计一个公共 API,并试图找出以下情况下 GET 的最佳实践:
路径参数:
/orders/{orderId}
Run Code Online (Sandbox Code Playgroud)
发现:200 个带有响应正文。
未找到:404。
查询参数:
/Products/{productId}/orders?color={color}
Run Code Online (Sandbox Code Playgroud)
找到的订单:200 个,带响应正文。
未找到:在这种情况下应该是 200 还是 204,甚至是 404?
在我看来,应该是200或204,因为本例中找到了资源,并且查询参数只是执行过滤效果。但在这种情况下我们应该返回 200 还是 204 呢?
rest http http-status-code-404 http-status-code-200 http-status-code-204
我有一个网站,其中包含不会更改的静态资产(js、图像等)。这些资源中的每一个都具有带有以下属性的缓存控制标头集:
cache-control: public, max-age=31536000, immutable
Run Code Online (Sandbox Code Playgroud)
但是,当我重新加载页面时,我仍然看到来自服务器的 200 响应,而不是 304 响应。浏览器指示正在从内存或磁盘缓存提供资源,但它仍在发出请求并下载内容。这以前是有效的,我倾向于这是一个浏览器错误,但我不完全确定。
http cache-control http-status-code-304 http-status-code-200
我正在尝试基于StackExchange的api结果松散地进行API排序.
所以这是我的json输出.
{
"items" : [ ... objects in here .... ]
"page" :
"page_size" :
"total_pages" :
"total_items_count" :
"maximum_quota" :
"remaining_quota" :
}
Run Code Online (Sandbox Code Playgroud)
非常简单.
现在,我不知道如果该人试图要求......产品或问题或其他什么,该项目不存在,该怎么做.
例如..
{
"items": []
... snipped ....
}
Run Code Online (Sandbox Code Playgroud)
我以为我会返回200和上面的Json,Items属性为空.
我的另一个想法是返回带有items属性的json,但是将响应http状态设置为404.
思想/标准?
无论如何,我真的想要回归json.为什么?配额.即使是空洞的结果仍然是api服务的合法打击.
我正在编写一个用于验证促销代码的微服务。客户向我发送促销代码和产品 ID (json)。有 200 OK 的情况,代码很好,我为他们的订单申请了折扣。但是有一个错误的情况,促销代码不适用于该产品。我不确定要使用什么响应代码。
这也应该是 200 OK (有某种消息说代码验证失败)?
应该是 400 Bad Request 吗?
两者似乎都不完全合适,当它不是“OK”时说 200 OK 很奇怪,但是 4xx 通常表示请求/http 协议的结构存在问题 - 在这种情况下,请求的结构很好。
api http http-status-codes http-status-code-400 http-status-code-200
这不是一个跨站点请求问题,因为我的问题的大多数Google搜索答案都包含在内.
当我尝试用jquery函数.get和.load创建一个ajax请求时,我得到xhr.status 0 och xhr.statusText"error".但是在Firebug中,请求的页面加载了html状态代码200,我可以读取响应中的文本,响应头看起来不错.
我的代码:
function GetProjectTask(e) {
var loader = $('#' + e + 'tasks div.loader');
var content = $('#' + e + 'tasks div.content');
var img = $('#' + e + 'tasks img.collapseimg');
if (loader.html() == null || loader.html().trim() == '') {
if (content.html() == null || content.html() == '') {
img.attr('src', 'images/expanded.gif');
loader.html('<img src="images/loading.gif" alt="Wait..."> Loading support tasks');
content.load('includes/my' + e + 'tasks.php',
function (response, status, xhr) {
if (status == "error") {
var msg = …Run Code Online (Sandbox Code Playgroud) 我正在 chrome 的网络选项卡中查看我的 ajax 请求,我注意到我所做的每个 ajax 请求都发生了两次。
第一个是 204,然后是 200。我的 ajax 调用只被击中一次,所以我不确定为什么有 2 个。
编辑
所以这似乎与 Cors 有关,我刚刚将其设置为星号 (*) 以进行测试。
我想没有太多我可以不让它做 2 个请求,但真正让我着迷的是为什么它需要这么长时间,我看着谷歌浏览器网络,在我的页面上,这些 204 花费了 110 毫秒到 1.97 秒。
所以我使用普通的javascript(没有jquery),将文件发送到服务器.服务器脚本PHP在结尾处返回状态代码200,但是javascript正在变为readyState == 2.
PHP代码发送回状态代码200:
header('X-PHP-Response-Code: 200', true, 200);
exit;
Run Code Online (Sandbox Code Playgroud)
javascript正在做:
request.onreadystatechange = function() {
if (request.readyState == 4) {
var message;
switch(request.status) {
case '200':
message = "Data uploaded successfully.";
break;
case '406':
message = "Incorrect file format. Please try again.";
break;
case '410':
message = "Unexpected error. Please contact support.";
break;
default:
break;
}
status_message_container.innerHTML = message;
submit_button.disabled = false;
}
else {
alert( "Unexpected error: " + this.statusText + ".\nPlease try again");
}
};
request.send(formData);
Run Code Online (Sandbox Code Playgroud)
甚至知道HTTP 200状态代码在前端正确返回(我得到'OK').JS脚本正在看readyState==2 …
我在域的根目录中有一个.htaccess文件和一个index.html文件.我在下面的.htaccess文件中编码:
DirectorySlash Off
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])?$ /index.html [L]
Run Code Online (Sandbox Code Playgroud)
我希望用户在访问目录URL时会看到index.html中的内容,无论此目录URL是否有斜杠.所以我上面有代码.
但我有一个问题.当我访问不存在的目录时.我得到404.这不是我想要的.我希望用户在访问目录URL时永远可以获得200并在index.html中查看内容.如何通过编辑.htaccess文件中的代码来解决此问题?
BTW.请不要将用户重定向到index.html文件.
谢谢!
.htaccess url-rewriting http-status-codes http-status-code-404 http-status-code-200
我正在使用 Flask 创建一个应用程序,该应用程序通过 HTTPS POST 从服务器接收一些数据并处理其数据。一旦我收到来自服务器的消息,我需要发送“status = 200”,以便服务器知道我收到了信息,并停止重新向我发送信息。
我必须发送 HTTPS GET 吗?这并不是真正的获取,因为我唯一需要的就是通知服务器我收到了消息......
我怎样才能在Python中做到这一点?我需要在处理收到的数据但不返回后执行此操作。
app = Flask(__name__)
@app.route('/webhook', methods=['POST','GET'])``
def webhook():
req = request.form
xml = req['data']
#HOW DO I SEND A CODE 200 NOW???
info = ET.fromstring(xml)
print info[0].text
print info[1].text
print info[2].text
print info[3].text
Run Code Online (Sandbox Code Playgroud)
谢谢!