根据豆瓣 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项目聚集地」,回复「技术博文」即可获取更多图文教程、技术博文、学习资源。

目录
相关文章
|
1天前
|
SQL 缓存 测试技术
构建高性能RESTful API:最佳实践与避坑指南###
—— 本文深入探讨了构建高性能RESTful API的关键技术要点,从设计原则、状态码使用、版本控制到安全性考虑,旨在为开发者提供一套全面的最佳实践框架。通过避免常见的设计陷阱,本文将指导你如何优化API性能,提升用户体验,确保系统的稳定性和可扩展性。 ###
22 9
|
2天前
|
JSON 缓存 API
构建高效RESTful API的最佳实践
【10月更文挑战第34天】在数字时代的浪潮中,后端开发扮演着至关重要的角色。本文将带你深入探索如何构建高效的RESTful API,从设计原则到实际编码技巧,再到性能优化和错误处理,我们将一一解锁这些技能。你将学会如何打造一个既优雅又强大的后端服务,让你的应用程序在激烈的市场竞争中脱颖而出。那么,让我们一起踏上这段精彩的旅程吧!
12 2
|
3天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
随着互联网技术的发展,前后端分离成为Web开发的主流模式。本文介绍RESTful API的基本概念、设计原则及在PHP中的实现方法。RESTful API是一种轻量级、无状态的接口设计风格,通过HTTP方法(GET、POST、PUT、DELETE)操作资源,使用JSON或XML格式传输数据。在PHP中,通过定义路由、创建控制器、处理HTTP请求和响应等步骤实现RESTful API,并强调了安全性的重要性。
11 2
|
5天前
|
存储 安全 API
深入理解RESTful API设计原则
本文旨在探讨RESTful API设计的基本原则和最佳实践,帮助开发者构建高效、可维护的Web服务。通过分析REST架构的核心概念,如资源、统一接口、无状态通信等,本文将指导读者如何设计符合REST原则的API,以及如何处理常见的设计挑战,如版本控制、错误处理和安全性问题。
|
7天前
|
存储 缓存 API
深入理解RESTful API设计原则
【10月更文挑战第28天】 在现代软件开发中,RESTful API已经成为了前后端分离架构下不可或缺的一部分。本文将探讨RESTful API的核心设计原则,包括资源导向、无状态性、统一的接口以及可缓存性等关键概念,并通过实例解析如何在实际应用中遵循这些原则来设计高效、可扩展的API。我们将深入了解REST架构风格的理论基础,并讨论其对提升系统互操作性和简化客户端实现的重要性。
40 3
|
8天前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
28 3
|
10天前
|
前端开发 关系型数据库 API
深入浅出后端开发——从零到一构建RESTful API
本文旨在为初学者提供一个关于后端开发的全面指南,特别是如何从零开始构建一个RESTful API。我们将探讨后端开发的基本概念、所需技术栈、以及通过实际案例展示如何设计和实现一个简单的RESTful API。无论你是完全的新手还是有一定编程基础的开发者,这篇文章都将为你提供实用的知识和技巧,帮助你在后端开发的道路上迈出坚实的一步。
|
10天前
|
XML API 网络架构
深入理解RESTful API设计原则与实践
【10月更文挑战第26天】在数字化浪潮中,API(应用程序编程接口)成为连接不同软件组件的桥梁。本文将深入浅出地探讨如何根据REST(Representational State Transfer)原则设计高效、易于维护和扩展的API,同时分享一些实用的代码示例,帮助开发者构建更加健壮和用户友好的服务。
|
11天前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
23 2
|
1天前
|
JavaScript 前端开发 NoSQL
深入浅出:使用Node.js构建RESTful API
【10月更文挑战第35天】在数字时代的浪潮中,后端技术如同海洋中稳固的灯塔,为前端应用提供数据和逻辑支撑。本文旨在通过浅显易懂的方式,带领读者了解如何利用Node.js这一强大的后端平台,搭建一个高效、可靠的RESTful API。我们将从基础概念入手,逐步深入到代码实践,最终实现一个简单的API示例。这不仅是对技术的探索,也是对知识传递方式的一次创新尝试。让我们一起启航,探索Node.js的奥秘,解锁后端开发的无限可能。
下一篇
无影云桌面