zoukankan      html  css  js  c++  java
  • Server的API如何设计才满足RESTful要求?

    Server的API如何设计才满足RESTful要求?


    首先是简洁版里面的那几点。外加一些附带的 best practices:
    1. URL root:
      https://example.org/api/v1/*
      https://api.example.com/v1/*
    2. API versioning:
    可以放在URL里面,也可以用HTTP的header:
      /api/v1/
    3. URI使用名词而不是动词,且推荐用复数。
    BAD
      /getProducts
      /listOrders
      /retrieveClientByOrder?orderId=1
    GOOD
      GET /products : will return the list of all products
      POST /products : will add a product to the collection
      GET /products/4 : will retrieve product #4
      PATCH/PUT /products/4 : will update product #4
    4. 保证 HEAD 和 GET 方法是安全的,不会对资源状态有所改变(污染)。比如严格杜绝如下情况:
      GET /deleteProduct?id=1
    5. 资源的地址推荐用嵌套结构。比如:
      GET /friends/10375923/profile
      UPDATE /profile/primaryAddress/city
    6. 警惕返回结果的大小。如果过大,及时进行分页(pagination)或者加入限制(limit)。HTTP协议支持分页(Pagination)操作,在Header中使用 Link 即可。
    7. 使用正确的HTTP Status Code表示访问状态:HTTP/1.1: Status Code Definitions
    8. 在返回结果用明确易懂的文本(String。注意返回的错误是要给人看的,避免用 1001 这种错误信息),而且适当地加入注释。
    9. 关于安全:自己的接口就用https,加上一个key做一次hash放在最后即可。考虑到国情,HTTPS在无线网络里不稳定,可以使用Application Level的加密手段把整个HTTP的payload加密。有兴趣的朋友可以用手机连上电脑的共享Wi-Fi,然后用Charles监听微信的网络请求(发照片或者刷朋友圈)。
    如果是平台的API,可以用成熟但是复杂的OAuth2。

  • 相关阅读:
    我来了
    性能分析:处理器、磁盘I/O、进程、网络分析方法 http://www.cnblogs.com/fnng/archive/2012/10/30/2747246.html
    jvisualvm监控服务器状态
    linux下常用监控命令
    app 常见网络性能
    native app ->hybrid app->web app的发展
    JMeter远程启动客户端总是不通的原因
    java机制
    webbench,linux下并发测试工具
    操作数数据类型 ntext 对于 max 运算符无效
  • 原文地址:https://www.cnblogs.com/wuxiang/p/8695944.html
Copyright © 2011-2022 走看看