`

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 ...

    arcgis server rest api

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

    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中的各种资源,...

    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