美文网首页
如何优化为Mobile app写的RESTful API

如何优化为Mobile app写的RESTful API

作者: yangweigbh | 来源:发表于2017-07-26 10:03 被阅读24次

    1. 移动应用访问的后端跟其他后端的区别

    • 使用https,每个endpoint使用同一类证书
    • Server承担大部分的计算任务
    • 请求失败要有清楚的错误码和错误信息
    • api 版本控制
    • 支持push

    2.设计RESTful API时应该考虑的东西

    • 自己搭建服务器还是使用云
    • 保护数据:https,每个endpoint的访问都需要认证,加密敏感数据
    • 开发环境:development, staging,production
    • 数据库选择:MySql 最稳定,以UUID作entity id
    • 选择正确的工具: 团队交流工具,进度可见,api 文档, test suite as document。
    • 支持多种客户端:pagination of long list result, client determine the number of results, include device name, os version, os type in header

    3.如何实现RESTful API

    • url 由动词和名词构成,动词是GET, POST, PUT, PATCH, DELETE, 名词就是url path,如

    GET /books
    POST /books
    GET /books/{bookId}
    PUT /books/{bookId}
    PATCH /books/{bookId}
    DELETE /books/{bookId}
    GET /books/{bookId}/authors
    GET /bookClubs/book
    GET /users/{userId}
    GET /users/{userId}/favoriteBooks

    通过url 参数使得client可以对数据进行筛选

    GET /libraries?sortBy=name&isCurrentlyOpen=true&pageCount=10
    GET /books?queryTitle=Sherlock+Holmes&queryAuthor=Arthur+Conan+Doyle
    GET /bookClubs?genre=mystery

    在 url 加入版本控制:

    GET /v1/books
    GET /v2/books

    request 和 response中缺失的field,不要假定为null

    用response code标示请求结果

    Json key保持同样的命名规则,驼峰或者下划线,不要混用

    不要包装数据

    GET /authors?genre=mystery

    {
    "data": {
    [{ "authorName": "Arthur Conan Doyle",
    ...
    }]
    }
    }

    当返回数据只有一个时,也要返回数组

    GET /authors?genre=mystery

    {
    "authorName": "Arthur Conan Doyle",
    ...
    }

    不要在响应中包含冗余数据

    GET /authors?genre=mystery

    {
    "requestInfo": {
    "genre": "mystery"
    },
    [{
    "authorName": "Arthur Conan Doyle",
    ...
    }]
    }

    请求和响应中的时间一律使用 ISO 8601 format with UTC values

    Reference

    https://savvyapps.com/blog/how-to-build-restful-api-mobile-app

    相关文章

      网友评论

          本文标题:如何优化为Mobile app写的RESTful API

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