开发者社区> dasein58> 正文

根据豆瓣 API 理解Restful API

简介:   1.什么是REST   REST全称是Representational State Transfer,表述状态转移的意思。它是在Roy Fielding博士论文首次提出。REST本身没有创造新的技术、组件或服务,它的理念就是在现有的技术之上,更好的使用现有的 web规范。用REST规范的web服务器,能够更好的展现资源,客户端能够更好的使用资源。每个资源都由URI/ID标识。REST本身跟http无关,但是目前http是与它相关的唯一实例。REST有着优雅、简洁的特性,本文是根据豆瓣api来谈谈自己对restful的一些理解。
+关注继续查看

  1.什么是REST

  REST全称是Representational State Transfer,表述状态转移的意思。它是在Roy Fielding博士论文首次提出。REST本身没有创造新的技术、组件或服务,它的理念就是在现有的技术之上,更好的使用现有的 web规范。用REST规范的web服务器,能够更好的展现资源,客户端能够更好的使用资源。每个资源都由URI/ID标识。REST本身跟http无关,但是目前http是与它相关的唯一实例。REST有着优雅、简洁的特性,本文是根据豆瓣api来谈谈自己对restful的一些理解。

  2.URI规范

  URI(Uniform Resource Identifiers) 统一资源标示符

  URL(Uniform Resource Locator) 统一资源定位符

  URI 的格式:

  URI的格式定义如下:

  URI=scheme "://" authority "/" path [ "?" query ] [ "#" fragment ]

  uri代表的是一种资源,要做到优雅、简洁。

  最好在api地址标明版本

  比如

  api.douban/v2

  关于分隔符“/”,比如:

  "/"分隔符一般用来对资源层级的划分,比如:

  api.douban/v2/book/1220562

  表述了豆瓣api,version2下的图书仓库下的编号为1220562的图书。

  URI尽量使用“-”代替下划线“_“。

  URI统一使用小写字母

  URI不包含文件扩展名

  使用?用来过滤资源,比如?limit=10 :指定返回10条记录。

  不使用无意义的字符串、数字,要做到简洁。

  3.正确使用method

  get -只用做资源的读取。

  post-通过用作创建一个新的资源。

  delete-通过用作资源的删除。

  put -通过用作更新资源或者创建资源

  head-只获取某个资源的头部信息。

  比如 豆瓣图书api:

  namemethodapi获取图书信息get/v2/book/:id用户收藏某本图书post/v2/book/:id/collection用户修改对某本图书的收藏put/v2/book/:id/collection用户删除对某个图书的收藏delete/v2/book/:id/collection

  另外,在一些不符合curd的情况下,使用 post。

  把动作转换成资源

  比如,上述接口中,买二手手游账号平台用户收藏某本书对外暴露的接口是”/v2/book/:id/collection”,收藏动作通过post方法来展现,而不直接写着api中,collection “收藏”,名次,动作直接转换成了资源。

  4.选择合适的状态码

  http请求需要返回状态码,约定俗成的状态码能够帮助开发团队提高沟通效率。

  2xx: 请求正常处理并返回

  3xx: 重定向

  4xx: 客户端请求有错误

  5xx: 服务端请求有错误

  比如豆瓣api返回的状态码说明:

  状态码含义说明200ok请求成功201created创建成功202accepted更新成功400bad request请求不存在401unauthorized未授权403forbidden禁止访问404not found资源不存在500internal server error内部错误

  5.使用通用的错误码

  通用错误码,具体产品由具体产品api给出。比如豆瓣api:

  错误码错误信息含义999unknow_v2_error未知错误1000need_permission需要权限1001uri_not_found资源不存在…….…

  太多了,只列出几条,具体见豆瓣 api。

  6. 安全

  这部分内容不属于这篇文章,但是稍微说明下:

  使用https

  使用jwt验证

  使用参数签名,防止参数被篡改。

  使用权限验证,shiro ,或者自己建数据库(用户、角色、权限)

  7.api文档

  接口文档的编写至关重要,最好是写一个在线接口文档。接口文档能够方便团队查阅,减少不必要的沟通。如果对外公开api,api文档的质量直接反应了一个公司的技术水平,甚至一个公司的文化气质。

  8.参考资料

  本文参考了以下的资料:

  豆瓣api

  理解restful架构

  restful introduction

  跟着github学习restful api设计

  REST接口设计规范

  restful api 设计指南

  如果喜欢本篇文章,欢迎转发、点赞。关注订阅号「Web项目聚集地」,回复「技术博文」即可获取更多图文教程、技术博文、学习资源。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15295 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
19982 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14860 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23526 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22227 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36349 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
14690 0
+关注
918
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载