美文网首页Microservice
Microservices中的API设计 - Problem +

Microservices中的API设计 - Problem +

作者: lvjian700 | 来源:发表于2015-07-25 17:44 被阅读528次
    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']
    }
    

    参考资料

    相关文章

      网友评论

      • Wendy曹:请问这个是http自带的还是什么?目前前端使用了application/problem+json之后,后端报“无效的Content-type”,要怎么解决呢?
        lvjian700:@程序媛Wendy cool. no worries
        Wendy曹:@lvjian700 emm…不好意思,自己的理解问题,没事儿了
        lvjian700:前端使用 `application/problem+json` ? 是 Http header 中有 `Accept: application/problem+json` ?

      本文标题:Microservices中的API设计 - Problem +

      本文链接:https://www.haomeiwen.com/subject/jxlmqttx.html