Microservices中的API设计 - Problem + json处理错误

404.png

Mircroservices API设计中,为了让错误信息更具有描述性,我们采用Problem+json的方式输出错误。

在problem+json之前,我们这么返回错误

采用Http Status Codes + Empty Response来返回错误数据:

HTTP/1.1 400 Bad request
Content-Type: application/json
Response Body:

problem+json中这么定义错误输出

HTTP/1.1 404 Not found
Content-Type: application/problem+json
Response Body:
{
    type: 'http://www.restapitutorial.com/httpstatuscodes.html',
    title: 'User data not found',
    detail: 'The user JO not found',
    status: 404,
    instance: 'http://localhost/users/JO'
}
  • type: 提供一个描述问题的连接(required)
  • title: 对错误做一个简短的描述(required)
  • status: HTTP status code(required)
  • detail: 详细描述错误信息(optional)
  • instance: 返回错误产生的URL, 绝对地址(optional)

采用problem+json格式我们可以让错误输出更具有描述性,可以让API Consumer更好进行错误处理

problem+json中也可以附加更多有意义的信息

例如采用如下信息描述订单问题:

HTTP/1.1 403 Forbidden
Content-Type: application/problem+json
Response Body:
{
    type: 'http://yourhost/docs/api/problems/out-of-credit',
    title: 'You do not have enough credit',
    detail: 'Your current balance is 30, but that costs 50.',
    instance: 'http://yourhost/users/lvjian/orders/1002222',
    balance: 30,
    users: [
        'http://yourhost/users/lvjian',
        'http://yourhost/users/saler']
}

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [APPVENTUR...
    guoshengboy阅读 2,623评论 0 2
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,170评论 6 13
  • JSON JSON和XML都是需要解析的 JSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据...
    JonesCxy阅读 1,882评论 2 10
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 2,597评论 0 6