数据异常是什么意思啊200是啥意思

&span class='hot-word'&微博&/span&老是服务器数据异常,是什么意思呢?
全部答案(共2个回答)
不太稳定。
请您不要着急,我们已接到部分用户对此类问题的反馈,针对相关功能异常情况我们已经修复,请您退出重新登录微博进行尝试即可。欢迎您有问题再次到互助专区提问。
重新登陆下,手机客户端的话可能你的位置手机信号比较差
微博账号提示异常/不存在导致无法登录,主要有以下几种情况:
1、帐号出现异常,根据页面提示点击“在线申诉”进行表单提交。
2、帐号异常/冻结要求手机...
就是服务器可能在维护,或者数据库在更新新的内容和服务器光纤被挖断
@微博客服:目前部分用户微博输入框和分组不显示的问题正在紧急修复中,给您带来的不便还望谅解!
新浪官方的解释
总之新浪现在处于混乱状态,数据啥的全乱了,稍后再试...
答: 臻挺美为什么那么不错 有那么好吗
答: 慢慢弄。
我最开始只会装游戏;
后来中国有了网络慢慢跟朋友上聊天室聊天;
后来出了OICQ(现在叫QQ),又用那东西聊;
然后上联众玩在线游戏(棋牌类);
答: 七十年代的计算机网络
X.25 分组交换网:各国的电信部门建设运行
各种专用的网络体系结构:SNA,DNA
Internet 的前身ARPANET进行实验运行
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415查看: 16475|回复: 56
QQ<dd title="365203火钻0 最后登录积分357注册时间帖子
新锐斯沃特, 积分 357, 距离下一级还需 243 积分
本帖最后由 麦芽糖Lu 于
22:14 编辑
安全系统检测的您的游戏数据异常,使用第三方软件等不规范的游戏行为,将会严厉的封号处罚
玩了这么久游戏,从来不用外挂,今天游戏途中突然跳出来这个提示,什么意思?我花钱买装备了算开挂吗?还一直出现无法登陆?那我里面买的那么多装备是不是时间给我延后?
WIN7旗舰版,64位系统;广东电信一区,QQ.之前从来没有出现过作弊检测的,29日更新后就这样了。&&
本帖子中包含更多资源
才可以下载或查看,没有帐号?
火钻0 最后登录积分14935注册时间帖子
混世大魔王
专家潘多拉, 积分 14935, 距离下一级还需 65 积分
楼主是否在网吧?
数据异常 或者安全监测到第三方软件如果没有使用的话,关闭游戏等待30分钟重新登录就可以了
火钻0 最后登录积分14935注册时间帖子
<a href="home.phpHTTP错误汇总(404、302、200……)
HTTP 400 - 请求无效
HTTP 401.1 - 未授权:登录失败
HTTP 401.2 - 未授权:服务器配置问题导致登录失败
HTTP 401.3 - ACL 禁止访问资源
HTTP 401.4 - 未授权:授权被筛选器拒绝
HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
HTTP 403 - 禁止访问
HTTP 403 - 对 Internet 服务管理器 的访问仅限于 Localhost
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 - 禁止访问:禁止读访问
HTTP 403.3 - 禁止访问:禁止写访问
HTTP 403.4 - 禁止访问:要求 SSL
HTTP 403.5 - 禁止访问:要求 SSL 128
HTTP 403.6 - 禁止访问:IP 地址被拒绝
HTTP 403.7 - 禁止访问:要求客户证书
HTTP 403.8 - 禁止访问:禁止站点访问
HTTP 403.9 - 禁止访问:连接的用户过多
HTTP 403.10 - 禁止访问:配置无效
HTTP 403.11 - 禁止访问:密码更改
HTTP 403.12 - 禁止访问:映射器拒绝访问
HTTP 403.13 - 禁止访问:客户证书已被吊销
HTTP 403.15 - 禁止访问:客户访问许可过多
HTTP 403.16 - 禁止访问:客户证书不可信或者无效
HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效 HTTP 404.1 -
无法找到 Web 站点
HTTP 404- 无法找到文件
HTTP 405 - 资源被禁止
HTTP 406 - 无法接受
HTTP 407 - 要求代理身份验证
HTTP 410 - 永远不可用
HTTP 412 - 先决条件失败
HTTP 414 - 请求 - URI 太长
HTTP 500 - 内部服务器错误
HTTP 500.100 - 内部服务器错误 - ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 - 服务器太忙
HTTP 500-14 - 应用程序无效
HTTP 500-15 - 不允许请求 global.asa
Error 501 - 未实现
HTTP 502 - 网关错误
用户试图通过 HTTP 或文件传输协议 (FTP) 访问一台正在运行
Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。该状态代码记录在 IIS
日志中,同时也可能在 Web 浏览器或 FTP
客户端显示。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。
日志文件的位置
在默认状态下,IIS 把它的日志文件放在 %WINDIRSystem32Logfiles 文件夹中。每个万维网 (WWW) 站点和
站点在该目录下都有一个单独的目录。在默认状态下,每天都会在这些目录下创建日志文件,并用日期给日志文件命名(例如,exYYMMDD.log)。
1xx - 信息提示
这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx
响应。 & 100 - 继续。
& 101 - 切换协议。
2xx - 成功
这类状态代码表明服务器成功地接受了客户端请求。 & 200 -
确定。客户端请求已成功。
& 201 - 已创建。
& 202 - 已接受。
& 203 - 非权威性信息。
& 204 - 无内容。
& 205 - 重置内容。
& 206 - 部分内容。
3xx - 重定向
客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
& 302 - 对象已移动。
& 304 - 未修改。
& 307 - 临时重定向。
4xx - 客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。 & 400 -
错误的请求。
& 401 - 访问被拒绝。IIS 定义了许多不同的 401
错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示: & 401.1 -
登录失败。
& 401.2 - 服务器配置导致登录失败。
& 401.3 - 由于 ACL 对资源的限制而未获得授权。
& 401.4 - 筛选器授权失败。
& 401.5 - ISAPI/CGI 应用程序授权失败。
& 401.7 & 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
& 403 - 禁止访问:IIS 定义了许多不同的 403
错误,它们指明更为具体的错误原因: & 403.1 - 执行访问被禁止。
& 403.2 - 读访问被禁止。
& 403.3 - 写访问被禁止。
& 403.4 - 要求 SSL。
& 403.5 - 要求 SSL 128。
& 403.6 - IP 地址被拒绝。
& 403.7 - 要求客户端证书。
& 403.8 - 站点访问被拒绝。
& 403.9 - 用户数过多。
& 403.10 - 配置无效。
& 403.11 - 密码更改。
& 403.12 - 拒绝访问映射表。
& 403.13 - 客户端证书被吊销。
& 403.14 - 拒绝目录列表。
& 403.15 - 超出客户端访问许可。
& 403.16 - 客户端证书不受信任或无效。
& 403.17 - 客户端证书已过期或尚未生效。
& 403.18 - 在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。
& 403.19 - 不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
& 403.20 - Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
& 404 - 未找到。 & 404.0 -(无) &
没有找到文件或目录。
& 404.1 - 无法在所请求的端口上访问 Web 站点。
& 404.2 - Web 服务扩展锁定策略阻止本请求。
& 404.3 - MIME 映射策略阻止本请求。
& 405 - 用来访问本页面的 HTTP 谓词不被允许(方法不被允许)
& 406 - 客户端浏览器不接受所请求页面的 MIME 类型。
& 407 - 要求进行代理身份验证。
& 412 - 前提条件失败。
& 413 & 请求实体太大。
& 414 - 请求 URI 太长。
& 415 & 不支持的媒体类型。
& 416 & 所请求的范围无法满足。
& 417 & 执行失败。
& 423 & 锁定的错误。
5xx - 服务器错误
服务器由于遇到错误而不能完成该请求。 & 500 - 内部服务器错误。 &
500.12 - 应用程序正忙于在 Web 服务器上重新启动。
& 500.13 - Web 服务器太忙。
& 500.15 - 不允许直接请求 Global.asa。
& 500.16 & UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
& 500.18 & URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
& 500.100 - 内部 ASP 错误。
& 501 - 页眉值指定了未实现的配置。
& 502 - Web 服务器用作网关或代理服务器时收到了无效响应。 & 502.1 - CGI 应用程序超时。
& 502.2 - CGI 应用程序出错。application.
& 503 - 服务不可用。这个错误代码为 IIS 6.0 所专用。
& 504 - 网关超时。
& 505 - HTTP 版本不受支持。
常见的 HTTP
状态代码及其原因
& 200 - 成功。 此状态代码表示 IIS 已成功处理请求。
未修改。客户端请求的文档已在其缓存中,文档自缓存以来尚未被修改过。客户端使用文档的缓存副本,而不从服务器下载文档。
& 401.1 - 登录失败。 登录尝试不成功,可能因为用户名或密码无效。
& 401.3 - 由于 ACL 对资源的限制而未获得授权。 这表示存在 NTFS
权限问题。即使您对试图访问的文件具备相应的权限,也可能发生此错误。例如,如果 IUSR 帐户无权访问
C:WinntSystem32Inetsrv 目录,您会看到这个错误。 有关如何解决此问题的其他信息,请单击下面的文章编号,查看
Microsoft 知识库中相应的文章:
187506 INFO: IIS 4.0 的基础 NTFS 权限
& 403.1 - 执行访问被禁止。 下面是导致此错误信息的两个常见原因: & 您没有足够的执行许可。例如,如果试图访问的 ASP
页所在的目录权限设为“无”,或者,试图执行的 CGI 脚本所在的目录权限为“只允许脚本”,将出现此错误信息。若要修改执行权限,请在
Microsoft 管理控制台 (MMC)
中右击目录,然后依次单击属性和目录选项卡,确保为试图访问的内容设置适当的执行权限。
& 您没有将试图执行的文件类型的脚本映射设置为识别所使用的谓词(例如,GET 或 POST)。若要验证这一点,请在 MMC
中右击目录,依次单击属性、目录选项卡和配置,然后验证相应文件类型的脚本映射是否设置为允许所使用的谓词。
& 403.2 - 读访问被禁止。验证是否已将 IIS
设置为允许对目录进行读访问。另外,如果您正在使用默认文件,请验证该文件是否存在。有关如何解决此问题的其他信息,请单击下面的文章编号,查看
Microsoft 知识库中相应的文章:
247677 错误信息:403.2 Forbidden:Read Access Forbidden(403.2
禁止访问:读访问被禁止)
& 403.3 - 写访问被禁止。 验证 IIS 权限和 NTFS
权限是否已设置以便向该目录授予写访问权。有关如何解决此问题的其他信息,请单击下面的文章编号,查看 Microsoft
知识库中相应的文章:
248072 错误信息:403.3 Forbidden:Write Access Forbidden(403.3
禁止访问:写访问被禁止)
& 403.4 - 要求 SSL。禁用要求安全通道选项,或使用 HTTPS 代替 HTTP 来访问该页面。如果没有安装证书的 Web
站点出现此错误,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
224389 错误信息:HTTP 错误 403、403.4、403.5 禁止访问:要求 SSL
& 403.5 - 要求 SSL 128。禁用要求 128 位加密选项,或使用支持 128
位加密的浏览器以查看该页面。如果没有安装证书的 Web 站点出现此错误,请单击下面的文章编号,查看 Microsoft
知识库中相应的文章:
224389 错误信息:HTTP 错误 403、403.4、403.5 禁止访问:要求 SSL
& 403.6 - IP 地址被拒绝。您已把您的服务器配置为拒绝访问您目前的 IP
地址。有关如何解决此问题的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
248043 错误信息:403.6 - Forbidden:IP Address Rejected(403.6 - 不可用:IP
地址被拒绝)
要求客户端证书。您已把您的服务器配置为要求客户端身份验证证书,但您未安装有效的客户端证书。有关其他信息,请单击下面的文章编号,查看
Microsoft 知识库中相应的文章:
190004 错误 403.7 或“Connection to Server Could Not Be
Established”(无法建立与服务器的连接)
186812 PRB:错误信息:403.7 Forbidden:Client Certificate Required(403.7
禁止访问:要求客户端证书)
& 403.8 - 站点访问被拒绝。您已为您用来访问服务器的域设置了域名限制。有关如何解决此问题的其他信息,请单击下面的文章编号,查看
Microsoft 知识库中相应的文章:
248032 错误信息:Forbidden:Site Access Denied 403.8(禁止访问:站点访问被拒绝
用户数过多。与该服务器连接的用户数量超过了您设置的连接限制。有关如何更改此限制的其他信息,请单击下面的文章编号,以查看
Microsoft 知识库中相应的文章:
248074 错误信息:Access Forbidden:Too Many Users Are Connected
403.9(禁止访问:连接的用户太多 403.9)
注意:Microsoft Windows 2000 Professional 和 Microsoft Windows XP
Professional 自动设置了在 IIS 上最多 10 个连接的限制。您无法更改此限制。
& 403.12 - 拒绝访问映射表。 您要访问的页面要求提供客户端证书,但映射到您的客户端证书的用户 ID
已被拒绝访问该文件。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
248075 错误信息:HTTP 403.12 - Access Forbidden:Mapper Denied
Access(HTTP 403.12 - 禁止访问:映射表拒绝访问)
& 404 - 未找到。 发生此错误的原因是您试图访问的文件已被移走或删除。如果在安装 URLScan
工具之后,试图访问带有有限扩展名的文件,也会发生此错误。这种情况下,该请求的日志文件项中将出现“Rejected by
URLScan”的字样。
& 500 - 内部服务器错误。 很多服务器端的错误都可能导致该错误信息。事件查看器日志包含更详细的错误原因。此外,您可以禁用友好
HTTP 错误信息以便收到详细的错误说明。 有关如何禁用友好 HTTP 错误信息的其他信息,请单击下面的文章编号,以查看
Microsoft 知识库中相应的文章:
294807 如何在服务器端禁用 Internet Explorer 5 的“显示友好 HTTP 错误信息”功能
& 500.12 - 应用程序正在重新启动。 这表示您在 IIS 重新启动应用程序的过程中试图加载 ASP
页。刷新页面后,此信息即会消失。如果刷新页面后,此信息再次出现,可能是防病毒软件正在扫描 Global.asa
文件。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
248013 错误信息:HTTP Error 500-12 Application Restarting(HTTP 错误 500-12
应用程序正在重新启动)
& 500-100.ASP - ASP 错误。 如果试图加载的 ASP
页中含有错误代码,将出现此错误信息。若要获得更确切的错误信息,请禁用友好 HTTP 错误信息。默认情况下,只会在默认 Web
站点上启用此错误信息。有关如何在非默认的 Web 站点上看到此错误信息的其他信息,请单击下面的文章编号,以查看 Microsoft
知识库中相应的文章:
261200 显示 HTTP 500 错误信息,而不显示 500-100.asp 的 ASP 错误信息
& 502 - 网关错误。 如果试图运行的 CGI 脚本不返回有效的 HTTP 标头集,将出现此错误信息。
1xx - 肯定的初步答复
这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。
& 110 重新启动标记答复。
& 120 服务已就绪,在 nnn 分钟后开始。
& 125 数据连接已打开,正在开始传输。
& 150 文件状态正常,准备打开数据连接。
2xx - 肯定的完成答复
一项操作已经成功完成。客户端可以执行新命令。 & 200 命令确定。
& 202 未执行命令,站点上的命令过多。
& 211 系统状态,或系统帮助答复。
& 212 目录状态。
& 213 文件状态。
& 214 帮助消息。
& 215 NAME 系统类型,其中,NAME 是 Assigned Numbers 文档中所列的正式系统名称。
& 220 服务就绪,可以执行新用户的请求。
& 221 服务关闭控制连接。如果适当,请注销。
& 225 数据连接打开,没有进行中的传输。
& 226 关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。
& 227 进入被动模式 (h1,h2,h3,h4,p1,p2)。
& 230 用户已登录,继续进行。
& 250 请求的文件操作正确,已完成。
& 257 已创建“PATHNAME”。
3xx - 肯定的中间答复
该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。 & 331
用户名正确,需要密码。
& 332 需要登录帐户。
& 350 请求的文件操作正在等待进一步的信息。
4xx - 瞬态否定的完成答复
该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。 & 421
服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。
& 425 无法打开数据连接。
& 426 C transfer aborted.
& 450 未执行请求的文件操作。文件不可用(例如,文件繁忙)。
& 451 请求的操作异常终止:正在处理本地错误。
& 452 未执行请求的操作。系统存储空间不够。
5xx - 永久性否定的完成答复
该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。 & 500
语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。
& 501 在参数中有语法错误。
& 502 未执行命令。
& 503 错误的命令序列。
& 504 未执行该参数的命令。
& 530 未登录。
& 532 存储文件需要帐户。
& 550 未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。
& 551 请求的操作异常终止:未知的页面类型。
& 552 请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。
& 553 未执行请求的操作。不允许的文件名。
常见的 FTP 状态代码及其原因
& 150 - FTP 使用两个端口:21 用于发送命令,20 用于发送数据。状态代码 150 表示服务器准备在端口 20
上打开新连接,发送一些数据。
& 226 - 命令在端口 20 上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。
& 230 - 客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。
& 331 - 客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。
& 426 - 命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。
该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS
的配置可能拒绝匿名访问。
& 550 - 命令未被执行,因为指定的文件不可用。例如,要 GET 的文件并不存在,或试图将文件 PUT
到您没有写入权限的目录。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。新浪微博错误代码-200_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
新浪微博错误代码-200
我有更好的答案
一.逻辑错误,语法上找不出错误.其它如变量未采用强制显式声明等而引起的错误:1,除发运算中除数为0等.数组下标越界是一种典型的运行时错误,只有在运行时才会发现.原因有多种错误代码出现原因有很多种,也就等于损坏了系统!其实,无论是什么软件、什么程序.计算机出现错误代码大部分是以上四个情况导致的,建议你根据不同的情况进行修复.VB通常会在代码写时或运行时报错,按报错提示查找解决.二.运行时出错,是指应用程序在运行其间执行非法操作或某些操作失败.在装系统时没有装好,都是由程序员进行编写的每个程序员都希望能编写出完美的应用程序代码但难免会有疏忽之处.三.编译错误,是由于不正确编写代码而产生.如非法实用或丢失关键字,遗漏必要的标点符号,函数调用缺参数或括号不匹配等,如要打开的文件没找到,磁盘空间不够; 2.电脑的有些硬件驱动没有装好;3.系统的缓存不够,太小了;4.某些应用程序在安装有些文件会与系统文件相互共用,一但你删除或损坏这个程序的话
采纳率:92%
为您推荐:
其他类似问题
新浪微博的相关知识
等待您来回答API 使用 HTTP 状态码还是全部返回 200
15:43:29 +08:00 · 12392 次点击
如题,方案一:所有就是只以HTTP状态码来表示状态,200时候返回内容就是数据,最多有个分页(其实分页我都不想放响应内容里,我觉得像github那样放到header更整洁)。
&count&: 1,
&next&: null,
&previous&: null,
&results&: [
只有在抛出Exception异常(即使业务逻辑上有问题,也抛出APIException异常)才返回:
HTTP/1.1 405 Method Not Allowed
Content-Type: application/json
{&status_code&: 405, &message&: &Method &#39;DELETE&#39; not allowed.&}
方案二:所有接口都返回200(我觉得有点不切实际,比如403,500等,再加上很多客户端http库都会对这些抛异常的),然后响应里包含:
&status_code: 1000
&message&: &xxxxx&
&result&: {
现在貌似很多客户端开发都希望是方案二,因为这样他们逻辑会简单些(200以外全去捕获异常,200时再看status_code做不同处理),但是作为服务端更倾向于方案一,因为大多框架和各家提供的API都是这么干的,其实也很简单(先看状态码,然后直接根据状态码决定后续动作)。
在两个方案中纠结,来请大家给点建议哈~
以前都是在SO上发帖,第一次在v站发帖,如有没说清楚或者违反社区原则的地方,请大家不吝指出。
65 回复 &| &直到
21:45:37 +08:00
& & 16:08:12 +08:00
& & 16:08:13 +08:00
我也是用方案二,所有请求都返回200,然后在响应里有个status code表明服务请求状态,要不感觉响应里有status code和http 也有状态码是不是多余了?
& & 16:55:48 +08:00
但是作为服务端更倾向于方案一,因为大多框架和各家提供的API都是这么干的,其实也很简单(先看状态码,然后直接根据状态码决定后续动作)。
这个结论怎么得出来的?
& & 16:55:59 +08:00
有些地方直接抛非200状态,JS就傻眼了
& & 16:57:20 +08:00
补充一点,用HTTP状态码判断,这个方案让人想起了之前那个 @ 的API,居然还得用不同的HTTP方法,神一般的设计。
& & 17:07:22 +08:00 via Android
如果不走HTTPS,会不会有些地方奇葩运营商对一些HTTP状态码进行一些自定义行为
& & 17:24:39 +08:00
@ 多谢,我们现在可能主要不是Web的javascript,而是针对客户端,不过可以按照同样方法处理。200和204之间我们会遵循RESTful惯例。
@ 这个只是方便了客户端而已,一个是http rfc里定义的状态,一个是业务逻辑定义的状态。方案二十忽略了前者。
@ 框架比如DRF,http://www.django-rest-framework.org/api-guide/exceptions/ ,‘各家’以github为例:
@ js也可以success,fail啊?
@ 能给个具体链接吗?不同方法不是本地讨论范围内,那个是RESTful的惯例。
@ 这个的确是个问题,多谢提醒,后续如果真出现这样的问题,我们会部署的HTTPS。
另外一点从讨论中开始浮出来了:就是是沿用HTTP规范的状态码(但是自己提供message),还是不用HTTP那套(所有的都用200),自己定一套status code+message?
& & 17:37:13 +08:00
@ 果然,你说到框架了,哈哈。框架不多说了,每个人有自己的喜好。至于github没有业务状态,那请问如果错误类型较多,怎么办?光靠他返回的英文内容?那国际化问题怎么办?还得配合Google翻译啊?
& & 17:49:42 +08:00 via Android
@ 这需要什么国际化,本质上返回的错误信息还是要客户端自己处理掉的,也不是直接返回给用户
& & 17:49:54 +08:00
@ 错误类型较多?一个HTTP的API如果错误类型超过了HTTP规范里的状态类型,我觉得这个API需要重构了。还有客户端对大部分服务端错误,除了类似临时出错,重试就能解决那些,其他的基本只能友好地提示下用户。github目前没有应该是自定义的错误状态列表,目前我们的逻辑也还还没超过github~ github目前没有做国际化,即使后续国际化,只要服务端检测请求的语言(或者加locale参数),返回对应语言的文本,这个应该也不成问题。
& & 17:52:44 +08:00 via Android
有些ISP会对非200的状态码返回特殊内容,比如一些广告
& & 18:03:57 +08:00
@ 嗯,@pubby已经提醒了我,后续会部署HTTPS。
& & 18:18:43 +08:00
HTTP那个是协议层的状态
API可以有符合自己语义的状态
& & 18:29:31 +08:00
@ 说的好。
如果使用方案一,前端就不能很好的处理某些较为复杂的业务逻辑了。比如登录接口,到底是”账号不存在“,还是”密码错误“,后端需要根据业务返回不同的错误码,然后前端根据错误码进行对应的业务处理,”账号不存在“,可以跳转到注册页面,“密码错误”可以清空密码,让用户重新输入。
& & 18:36:31 +08:00
一律使用统一的状态码,无需讨论。
& & 19:11:48 +08:00
HTTP RESTful API 就是针对资源的,协议的状态码也就是资源响应的状态码,其实直接用足够了。如果觉得不够,可以加自定义的小数点进行细分,比如 400.1 代表输入数据格式不匹配,400.2 代表另一个输入数据问题等。
服务端状态的文本消息是没有必要放在响应里传回来的,都应该是前端根据码表对应处理。所以基本不存在国际化的问题。
具体到“登录接口”的“账号不存在”或“密码错误”这种情况,就是对于 session 这个资源创建新的会话没有权限,后端可以用 401 或者 403 来返回状态,而前端拿到状态怎么处理那就随便了。
而前些年大家都用 200 的后端返回,而在数据里再用 `status` 来表示状态,一方面是 RESTful 的理念还没有普及,另一方面也是很多框架不支持,自己实现比较麻烦。现在如果希望设计成 RESTful 的 API,就可以直接使用 HTTP 协议里的很多特性,而没必要再自己定一套规则。
& & 19:12:30 +08:00
@ 是的,但是现在客户端开发倾向于不处理前者,指处理后者。
@ 这种复杂情况的确是,我现在能想到就是这个时候再加上具体错误码 {&code&: xxx, &message&: &username or password is incorret.&},而平时没有异常时返回中不额外加code和message(那时候也基本没用),而出错逻辑我们(全局)可以控制,比如自定义exception。
@ 方案一 or 方案二?
& & 19:13:37 +08:00
@ 你说的最后一段,我深表赞同。
& & 19:21:51 +08:00
@ 有道理
方案2这样在HTTP之上再造协议的方式, 更接近以前的RPC
& & 20:11:03 +08:00
like @ said,使用 统一的 HTTP 状态码
话说大家都不知道协议里规定的状态码?
& & 20:24:14 +08:00
统一状态码,要开发者在状态码上做鉴定是一件非常麻烦的事。
& & 20:59:43 +08:00
服务器端不一定真能保证200的状态码,除非你去修改web服务器。500,502直接会让你的客户端崩溃。所以,严格按照方案1是比较靠谱的,客户端只需要判断三种情况,2开头的是正常的,4开头的,是客户端的错误,5开头的是服务器端出错。
& & 21:00:12 +08:00
@ 是的,很多客户端开发都不清楚有这么多可以用啊。当然现实中一个接口不会用太多。
& & 21:02:08 +08:00
@ 所言极是,标准里就已经分类好了的,但是客户端同学好像不喜欢这么做,他们习惯了方案二。。。
& & 22:01:29 +08:00
@ 如果你硬要这么说,那也没办法了。等那天觉得状态码不够用了,你就自己在协议上扩展吧,杂交一下未必不可。
不过这里还是想说一下,接口逻辑与HTTP协议本身分开,是有利于接口脱离HTTP而存在的的,否则后续如果不走RESTful了,接口代码又得变了。因此,个人还是建议在接口中返回相应的数据,这样即使改成其他方式了,端到端的业务都不会有任何影响。
& & 22:31:36 +08:00
@ 是的,如果不走RESTful,比如走thrift,这个方案就行不通。但是如果是thrift,就直接抛异常就好。
& & 22:35:13 +08:00 via Android
全都使用200就等于放弃返回码的语义,不推荐,虽然很多人都这样干,还是不推荐。
& & 23:09:58 +08:00 via Android
@ RESTful API设计可以看看这个
& & 00:36:53 +08:00
全部用200,除非客户端不支持 header http code才会考虑,否则不建议在body里面自己定义一个code(这很明显是多余的,很多 rest client 默认支持 header http code。
& & 00:38:55 +08:00
& & 08:30:19 +08:00
@ 嗯,很久前看过,现在关键是客户端同学对RESTful啥概念都没有。。。
@ 是的,我也认为多余,但是一大堆人都倾向于方案二,自己造。。。
& & 08:51:23 +08:00 via Android
@ 如果是这种情况 引入JSON-RPC会好些 封装好基本不会太在意接口细节 使用基本就和用本地方法差不多
& & 08:52:41 +08:00
看到dropbox的blog,我也坚决选择方案一了
We’ve also simplified our use of HTTP status codes for errors. For errors that are common to all API calls, we do the same thing as before: 400 for bad request, 401 for auth failure, 429 for rate limiting, etc. But if a request fails for some call-specific reason, v1 might have returned any of 403, 404, 406, 411, etc. API v2 will always return a 409 status code with a stable and documented error identifier in the body.
& & 09:16:47 +08:00 via Android
HTTP状态码是给HTTP协议用的,反应HTTP协议的情况。你用HTTP协议传消息,是在HTTP上又加了一层通信协议……所以应该自己控制返回消息……不应该用HTTP状态码。协议要分层。
& & 10:57:20 +08:00
其实还是要看你们的客户端同学的能力的
我原来也是用statuscode的
结果客户端一票人都跟我说实现不了……
硬生生地把漂亮的代码改成?一样了
& & 11:03:41 +08:00
@ 哈哈,还是平时库多了。。。
& & 11:05:31 +08:00
@ 库用多了,就不知道自己该怎么处理了。记得有次iOS某个库,如果出错了(4XX之类),连响应body都不给你,只给你header,当时纠结我好久。
& & 11:11:01 +08:00
哎……说库不好的其实都是不看文档的
我觉得?一样的代码写得很不爽,co 了一份客户端的代码
发现用的库的文档里面赫然写着onErrorCallback(statuscode, body),
然后我看了看为什么他们说实现不了,结果发现他们都是把逻辑放onSuccessCallaback
这事还出在客户端主程身上……
立马怒了找他们老大,结果人家丢一句,新系统上了么,我说上了,他说算了吧……
& & 11:14:45 +08:00 via Android
工程角度看第二种好多了,第一种的移植性太差。从协议本身看,需要一层协议描述消息完整性,上面一层才是语义。所以HTTP 200并不好,更多是因为简单,事实标准。restful这套有道理,但是用XML soap可以完全取代restful这套,为什么SOAP输了,更多是因为复杂程度,所以没成为事实标准。只要成了标准,做什么都是对的。
& & 11:31:55 +08:00 via iPhone
怎么高兴怎么来
& & 11:35:29 +08:00
我想问支持 200 的这些朋友,你在家说方言,出门也说方言么?
& & 11:35:45 +08:00
有没有同学从老板的角度说说看法呢?
两种方案对于产品的影响是什么?哪种方案的ROI更高?(毕竟技术是为产品服务嘛~~)
我突然想到某位晋升很快的一个朋友说过“技术只是手段”,我觉得我们可以多从其他角度想想。
或许再回过头来看,就会有种感悟——“不用在意那些细节”
当然,我上面说的话,可能,对于大部分开发者来说,都是不中听的。
我非常理解,那就请你们多包涵。
& & 11:59:17 +08:00
@ 你真应该好好读下 @
你刚才引用的 &v2 will always return a 409 status code with a stable and documented error identifier in the body.& 人家也是有错误ID返回的。 按你之前的意思,这是不是也算 “自己造” 了?
& & 12:08:05 +08:00
老板没做过, 从管理角度看恐怕方案2开发成本要低些
RESTful那一套是对HTTP的横向扩展, 吃透需要开发者有不坏的sense
方案2是在HTTP上层扩展, 没那么多要求
从技术面来看
Dropbox的服务是关于文件的, 他的API的语义天然地接近HTTP Resource, 不另外做扩展层有利于从HTTP的特性得益(如cache)
但是如果我要做的API不需要cache呢? 如果我的API甚至不是关于某种资源呢? 强行REST的好处在哪?
& & 14:29:15 +08:00
这里有个基于Apache CXF JAX-RS框架的restful api设计指南。感觉能帮到你
& & 15:22:33 +08:00
@ 那个bug有人同问后,官方给出方法是自己重写方法去实现的。
@ 赞同,尽量用大家认同的,不够用了再自己搞私有的(业务)状态码。
@ 嗯,是的,出错时会有detail和code,但是这个情况只在HTTP状态码不能满足的情况下。
@ 没有老板,只有技术哈
@ 嗯,我们目前没打算用HTTP以外的,至少API层(其他数据,如日志,推送等另说)。
@ 多谢,大致看了下,正常情况下也是纯数据,只有出错时才有status和message。
& & 15:32:24 +08:00
1,HTTP 是给使用 HTTP 的业务设计的,这也是为什么它是“应用层协议”。
2,如果不能理解第一点,那么请在心里默念100遍,&设计HTTP协议的人比我聪明&。
& & 16:33:36 +08:00 via Android
用方案一吧。写个API库封装一下,这样客户端用的开心你们也开心。我以前尝试给Dribbble API封装库的时候就是选择方案一的。
& & 16:42:41 +08:00
这个话题快赶上php是最好的语言了。
& & 18:07:33 +08:00 via Android
status code 应该只用来表达通讯状态,业务状态你可以放在response header自定义一个X-XXX-code
& & 19:31:06 +08:00
这篇文章做了一些总结。理论上应该用状态码。实践上用envelope返回状态码的非常多。个人也不觉得有什么本质区别,更多是一种风格和约定。
我觉得主要是json response没有一个普遍采用的标准。 有一些标准但没有被广泛采用
& & 19:41:04 +08:00
@
按这个逻辑, 发明HTTP的人想必是觉得自己比发明TCP的聪明
& & 19:53:58 +08:00 via Android
说一下我的经历,从前一个项目的开发一直是用200状态加json 返回的形式做的,前端开发人员写ajax代码也都从来不写错误回调而是依赖全局的错误回调,有一次一个新模块实验性上restful,结果那几天前端像疯了一样抱怨你们的接口都不能用,各种4xx,5xx的错误,结果是我们在响应体封装了消息他们都不看,只说这样的不合理。感觉我们的接口质量很差,然后新模块就继续json + 200了。感觉也是一个接受程度的问题,在他们的观念里只要不是200一定是你后端问题,说明你接口不稳定。而不考虑是我们把错误信息传递到了另一个层面。
& & 20:37:18 +08:00
@ 第一个链接不错,我现在做法是只有出错时才带Envelope。JSONP是个问题,但是暂时用不到。
& & 21:02:41 +08:00
对于这个问题,首先两种方式肯定都可以实现业务的,而且实现难度并没有很大差别,维护难度可能也没有很大差别。restful 只是一种约定,一种选择,不一定在所有情况下都&更好&。
对于开发者自身来说,这个约定目前比较流行,了解一下是应该的。
但在实际工作的项目中做出选择,需要考虑自己的工作环境。如果项目相关开发人员都了解并认可这种约定,那么就使用,因为不会带来很多额外成本。如果处在一个项目相关开发人员不了解,也没有愿望去了解和接受这个新约定的环境下,使用这个约定可能就是给项目找麻烦了。
& & 21:12:09 +08:00
我觉得这就是理想和现实的差别,作为服务端,先假设所有服务端开发者都能完全理解并实现 RESTful API,但是对于前端开发者,APP 开发者来说,很多人都不知道 HTTP 协议,他们不需要也没必要了解 HTTP 协议的具体内容,只需要知道能请求某个地址,获取到结果就行了。所以具体实践的时候遭到反对也是必然的了。
再说服务端,说自己的 API 是 RESTful 风格的,以及打算使用 RESTful 设计 API 的,或者正在这么实践的同学们,你们真的觉得自己实现了完整的 RESTful API 了么?这是个需要多次实践才能把握的东西,没有谁能保证一上手就能做好吧,和写代码一样,过段时间就会发现之前不好的地方,但是 API 又不能随便改,只能等下次大版本更新的时候来改了。
最后,RESTful 只是一个风格而已,实际开发中还是怎么好用怎么来的好。
& & 21:13:28 +08:00
& & 21:16:59 +08:00
用http status code,客户端封装一个函数即可、
& & 22:31:21 +08:00
GET、POST都傻傻分不清的人大有人在,之前在组上提过用 RESTful 的方式来实现API,后来终于说服他们了,他们在代码中新建了一个名字叫做 REST 的模块。。。。这就是我们的RESTful API,现在新进来成员的时候我都要花费口舌来介绍为啥我们的框架里面有个叫做REST的模块。醉了。
& & 22:46:30 +08:00
@ 是的,非200返回码经常被ISP和浏览器拦截处理。
& & 00:44:26 +08:00 via Android
@ 同意,RESTful就像流行时尚,某年流行洞洞鞋,好了,本来人字拖好好的也要换个洞洞鞋穿
& & 10:17:12 +08:00
刚刚看到一篇相关的,推荐之。/prattle/
& & 12:37:23 +08:00
@ 状态码不能满足的情况下,用错误代码,那不是得两套逻辑了?那何必搞那么复杂呢?
& & 16:02:36 +08:00
同意@,感觉方案二好
& & 21:45:37 +08:00 via Android
英语是最好的语言,所以 问好请说 是不是你很好。restful很好?挺傻的。有本事不依靠HTTP协议,自己独立的设计一套协议
& · & 1657 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 76ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51? Do have faith in what you're doing.

我要回帖

更多关于 数据异常是什么意思啊 的文章

 

随机推荐