`

REST API Design备忘

 
阅读更多


GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档

为什么要用RESTful结构呢?
大家都知道"古代"网页都是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。在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

RESTful API 编写指南
  • 大小: 217 KB
  • 大小: 21.8 KB
分享到:
评论

相关推荐

    OpenDaylight REST API研究

    OpenDaylight REST API 研究 OpenDaylight REST API 是一个基于 Representational State of Resource (REST) 架构风格的应用程序接口,提供了一种统一的方式来与 OpenDaylight 控制器交互。 OpenDaylight REST API ...

    WordPress插件:给REST API 新增文章特色图片(缩略图)字段,用于显示文章头图

    - **RESTAPI**:理解RESTful概念和如何在WordPress中使用REST API是非常重要的,包括了解其结构、端点和数据格式。 通过创建这样一个插件,我们能够使REST API更好地服务于现代Web开发的需求,为那些依赖API获取...

    Python库 | plone.restapi-7.5.0.tar.gz

    标题中的“plone.restapi-7.5.0.tar.gz”是一个开源软件包,它基于Python编程语言,专为Plone内容管理系统设计。Plone是一个强大的、可定制的、基于Zope的应用服务器上的内容管理框架。这个包是plone.restapi的7.5.0...

    H3C CAS REST API接口

    REST(Representational State Transfer)API是H3C CAS系统提供的一种接口方式,用于允许外部应用程序与CAS系统进行交互,实现系统的集成和二次开发。通过REST API,开发者可以远程操作和管理H3C CAS中的各种资源,...

    arcgis server rest api

    《ArcGIS Server REST API离线文档详解》 ArcGIS Server REST API是Esri公司提供的一种用于与ArcGIS Server交互的接口,它允许开发者通过HTTP/HTTPS协议访问和操作地理服务,进行地图数据的读取、写入以及处理。这...

    asa-restapi-7131-lfbff-k8.SPA

    ASA restapi文件

    odoo rest api

    **Odoo REST API** Odoo是一款开源的企业资源规划(ERP)软件,它提供了一整套模块化的业务应用程序,包括但不限于销售管理、采购、库存、财务会计等。在Odoo中,REST (Representational State Transfer) API是...

    restapi-version

    本项目"restapi-version"是一个演示如何在Spring MVC中实现REST API版本管理的雏形,旨在帮助开发者理解并掌握这一关键概念。 首先,让我们详细了解一下REST API的版本控制。在API设计中,随着业务需求的变化和功能...

    Building a Rest API with Spring

    本文主要介绍了使用Spring框架构建REST API的全过程,内容包括了从基础的Spring Web应用搭建,到使用Java配置,再到通过Spring Security进行安全认证和授权,以及REST API的其他重要特性,例如:使用HTTP消息转换器...

    openshift-java-client, OpenShift REST API的Java客户端.zip

    openshift-java-client, OpenShift REST API的Java客户端 OpenShift客户端 OpenShift REST API的Java客户端。 它几乎提供了 rhc-* 命令行 工具( 。创建/重命名域,创建/销毁应用程序,列出应用程序,列出可用墨盒,...

    Salesforce_REST_API

    Salesforce REST API是***提供的一项强大的网络服务接口,它允许开发者通过RESTful方式与Salesforce平台进行交互。REST(Representational State Transfer)是一种网络架构风格,适用于分布式超媒体系统,如万维网。...

    Rest api下载

    根据提供的文件信息,本文将对“Rest api下载”这一主题进行深入探讨,并结合描述与链接内容,提炼出关键知识点。 ### 一、Rest API简介 REST(Representational State Transfer)是一种网络应用程序的设计风格和...

    ActiveMQ与REST API实践

    **ActiveMQ与REST API实践** ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息中间件标准——Java Message Service(JMS)。ActiveMQ以其高性能、稳定性和丰富的特性在分布式系统中广泛使用,...

    Activiti v7 REST API.postman_collection.json

    Activiti v7 REST API postman集合

    简单封装rest api(支持http,https请求及代理模式)

    现在很多主流平台采用rest方式的...于是乎简单封装下rest请求api(其实就是两个简单Java类,呵呵),可以实现http及https模式的请求,也支持JsessionId和代理模式,甚至系统自动发送邮件的功能也是用此工具类实现的.

    Rest api服务器配置

    本文将深入探讨如何配置Rest API服务器,以及涉及到的相关技术点。 首先,理解REST(Representational State Transfer)架构风格的核心原则至关重要。REST强调的是资源的表述和状态转移,每个URL代表一个资源,通过...

Global site tag (gtag.js) - Google Analytics