大多数API开发人员首先考虑API开发功能的完成,然后考虑异常和错误处理,但是对于所有客户端来说,错误处理的质量是API体验的关键部分。

为什么好的错误设计对API设计人员来说尤其重要?

从使用Web API的应用程序开发人员的角度来看,该接口另一侧的所有内容都是黑盒的。因此,错误成为提供有关如何使用API的上下文和可见性的关键工具。

首先,开发人员学会通过错误来编写代码。 极限编程模型的测试优先概念和最新的测试驱动的开发模型代表了不断发展的最佳实践,因为这是对开发人员重要且自然的工作方式。

其次,除了在开发应用程序时,开发人员还需要在进行故障排除的关键时刻依靠精心设计的错误来解决问题。

如果您已经阅读了本书的其他部分,那么我们的建议是学习标准的HTTP状态代码并适当地使用它们,这并不会让您感到惊讶。状态代码不是孤立存在的-它们是HTTP响应消息的一部分,其中包括状态代码,标头,还可能包括数据。在您应该了解和使用的标准模式中,不同的状态码会带有相应的响应头。不要将状态码视为您实现的函数的返回码。

相反,请考虑完整的HTTP响应消息。例如,201创建的状态代码应始终与提供新创建资源的URL的Location标头配对。

HTTP/1.1 201 Created
Location: https://dogtracker.com/dogs/1234567

如果您的API允许客户端创建资源,则这是执行此操作的标准消息模式,因此您应该效仿,而不是重复造轮子。 同样,对成功的GET的响应不仅是200状态代码和一些数据,还包括标准的标头包,如下所示:

HTTP/1.1 200 OK
Content-Location: https://dogtracker.com/dogs/1234567
Content-Type: application/json
ETag: 1437080173827
Content-Length: nnnn// body goes here //

注意:Content-Location是可选的标头,只有在资源的“规范URL”与GET请求使用的URL不同时,服务器才会经常包含该标头。 我们认为始终包含此标头是有意义的。

作为最后一个示例,405错误代码说明“客户端尝试使用服务器不支持的方法”,因为给定的资源必须要与Allow表头配对才可以。

HTTP/1.1 405 Method Not Allowed
Allow: GET, DELETE, PATCH

了解这些状态码及其匹配的标头的组合以及使用它们的方案。每当您的应用程序中有类似情况时,请确保使用相同的标准模式。 这是成为Web API的含义的一部分,也是利用用户现有的Web知识的方式。

使负载中返回的消息尽可能冗长。 代码代号:

200 – OK
401 – Unauthorized

给人们的信息

{“developerMessage” : “Verbose, plain language description of the problem for the application developer with hints about how to fix it.”, “userMessage”:”Pass this message on to the app user if needed.”, “errorCode” : 12345, “more info”: “https://dev.teachdogrest.com/errors/12345”
}

注意:您会问:“如果错误消息是针对人的,为什么要使用JSON对其进行编码”。答案是,用户和消息之间通常存在一个程序化用户代理,因此,此消息的真正受众是用户代理。

总之,要冗长,并使用简单的语言描述。 添加尽可能多的提示,以使您的API团队可以考虑导致错误的原因。

我们建议您在说明中添加链接以获取更多信息。

【Web Design The Missing Link】Handing Error相关推荐

  1. 【Web Design The Missing Link】Chatty APIs

    REST API比较"琐碎(chatty)"是一个普遍的误解.如果您的API过于琐碎,那是因为您为客户设计了错误的资源,而不是因为您使用了REST." REST意味着琐碎 ...

  2. 【Web前端学习系列01】—HTML

    [Web前端学习系列01]-HTML HTML 基本标签-head head title标签 meta标签 link标签 style标签 script标签 base标签 文本 标题标签 h 段落标签 ...

  3. 【web必知必会】—— 图解HTTP(下)

    [web必知必会]-- 图解HTTP(下) 原文:[web必知必会]-- 图解HTTP(下) 上一篇<图解HTTP 上>总结了HTTP的报文格式,发送方式,以及HTTP的一些使用. 本文再 ...

  4. Tomcat学习笔记01【Web相关概念、Tomcat基本操作】

    Java后端 学习路线 笔记汇总表[黑马程序员] Tomcat学习笔记01[Web相关概念.Tomcat基本操作][day01] Tomcat学习笔记02[Tomcat部署项目][day01] 目录 ...

  5. 【CentOS Linux 7】实验6【web服务器搭建与管理】

    Linux系统及应用---调研报告 [Linux CentOS 7]实验1[VMware安装.新建虚拟机:63个基础命令运行结果图] [Linux CentOS 7]实验2[Shell编程及应用] [ ...

  6. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个扁平化风格css螃蟹图形~~适合初学者~超简单~ |前端开发|IT软件

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3+JavaScript制作一个扁平化风格css螃蟹图形~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <! ...

  7. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...

  8. 【web安全学习篇1】VBS脚本基础编写总结

    [web安全学习篇1]VBS脚本基础编写总结 VBS初始及变量 常量 注释与数学运算 布尔类型 if判断 select语句实现多条件循环 循环结构 循环嵌套 数组的定义与应用 定义二维数组及应用 初识 ...

  9. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个电风扇动画效果~适合初学者~超简单~ |前端开发|IT软件

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3+JavaScript制作一个电风扇动画效果~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYP ...

  10. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个可拖动的拼图游戏动画效果~适合初学者~超简单~ |it前端开发

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3+JavaScript制作一个可拖动的拼图游戏动画效果~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!D ...

最新文章

  1. 图灵五周年回馈读者活动现在开始啦!
  2. 陪伴程序员的一条龙、一骑士 36 岁了!
  3. 牛课网--走格子(环形遍历数组并且找出指定步数的位置)
  4. SAP标准导出功能 - 删除默认选定格式
  5. 【机器学习基础】前置知识(一):数学符号及希腊字母
  6. Python pip使用国内镜像
  7. 骚年快答 | 为何微服务项目都使用单体代码仓库?
  8. [快速入门]Spring Boot+springfox-swagger2 之RESTful API自动生成和测试
  9. WFDB软件包简介——ECG数据在Matlab下的读取/显示方法
  10. Css绝对定位position
  11. 网络编程知识点复习(第一次)
  12. pta c语言期末上机考试题库,PTA 程序设计 判断题-期末复习
  13. 产品需求文档五分钟轻松搞定!这可能史上最全PRD文档模板
  14. 斐讯K2路由编译Padavan华硕固件和心得
  15. 基于keras的mnist手写体识别程序
  16. 获取电脑ip并输入微信发送
  17. oracle ORA-28002:the password will expire within 7 days 解决方法
  18. python mse函数_Python 线性回归处理糖尿病数据 计算MSE等
  19. linux系列(十):shell循环结构、for、while
  20. 笔记本电脑计算机乱跳,笔记本屏幕的鼠标指针乱跳解决方法

热门文章

  1. 逆水寒服务器列表文件,逆水寒9月20日服务器合并结果公告一览 逆水寒9.20合服大全有哪些...
  2. 天龙微信游戏找服务器,《天龙八部3》微信公众号积分系统维护公告
  3. codeforces 1538G Gift Set
  4. PDF文件编辑指南4:PDF文档加密和移除PDF文档密码方法
  5. 有关凸集的证明例题_关于凸集、凸函数的一些证明
  6. python小游戏1:大鱼吃小鱼
  7. windows常用系统命令
  8. python代码螺旋线怎么写_python实现画五角星和螺旋线的示例
  9. 电脑网线/水晶头的连接方法(A类,B类)
  10. Python批量重命名图像