`
mo默羽
  • 浏览: 23445 次
社区版块
存档分类
最新评论

Restful API应遵循哪些规范?Python进阶

阅读更多

  Restful API是目前比较成熟的一套互联网应用程序的API设计理念,Rest是一组架构约束条件和原则,如何Rest约束条件和原则的架构,我们就称为Restful架构,Restful架构具有结构清晰、符合标准、易于理解以及扩展方便等特点,受到越来越多网站的采用!

  Restful API接口规范包括以下部分:

   一、协议

  API与用户的通信协议,总是使用HTTPs协议。

   二、域名

  应该尽量将API部署在专用域名之下,如https://api.oldboyedu.com;如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下,如https://oldboyedu.com/api/。

   三、版本

  可以将版本号放在HTTP头信息中,也可以放入URL中,如https://api.oldboyedu.com/v1/

   四、路径

  路径是一种地址,在互联网上表现为网址,在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数,如https://api.oldboyedu.com/v1/students。

   五、HTTP动词

  对于资源的具体操作类型,由HTTP动词表示,HTTP动词主要有以下几种,括号中对应的是SQL命令。

  1. GET(SELECT):从服务器取出资源(一项或多项);

  2. POST(CREATE):在服务器新建一个资源;

  3. PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源);

  4. PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性);

  5. DELETE(DELETE):从服务器删除资源;

  6. HEAD:获取资源的元数据;

  7. OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

   六、过滤信息

  如果记录数量很多,服务器不可能都将它们返回给用户,API会提供参数,过滤返回结果,常见的参数有:

  1. ?limit=20:指定返回记录的数量为20;

  2. ?offset=8:指定返回记录的开始位置为8;

  3. ?page=1&per_page=50:指定第1页,以及每页的记录数为50;

  4. ?sortby=name&order=asc:指定返回结果按照name属性进行升序排序;

  5. ?animal_type_id=2:指定筛选条件。

   七、状态码

  服务器会向用户返回状态码和提示信息,以下是常用的一些状态码:

  1. 200 OK - [GET]:服务器成功返回用户请求的数据;

  2. 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功;

  3. 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务);

  4. 204 NO CONTENT - [DELETE]:用户删除数据成功;

  5. 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作;

  6. 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误);

  7. 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的;

  8. 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作;

  9. 406 Not Acceptable - [GET]:用户请求的格式不可得;

  10. 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的;

  11. 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误;

  12. 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

   八、错误处理

  如果状态码是4xx,就会向用户返回出错信息,一般来说,返回的信息中将error作为键名,出错信息作为键值。

   九、返回结果

  针对不同操作,服务器向用户返回的结果应该符合以下规范:

  1. GET /collection:返回资源对象的列表(数组);

  2. GET /collection/resource:返回单个资源对象;

  3. POST /collection:返回新生成的资源对象;

  4. PUT /collection/resource:返回完整的资源对象;

  5. PATCH /collection/resource:返回完整的资源对象;

  6. DELETE /collection/resource:返回一个空文档。

   十、Hypermedia API

  RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。

  以上是Restful API设计应遵循的十大规范,除此之外,Restful API还需注意身份认证应该使用OAuth 2.0框架,服务器返回的数据格式,应该尽量使用JSON,避免使用XML。

  推荐看下老男孩教育的课程,Python开发自2012年开始至今,课程体系已成熟,且目前开设有0基础可以学习的全日制Python全栈开发脱产班和在职运维、测试、前端开发等朋友们可以学习的Python自动化开发周末班的课程。现在Python全栈开发开始实行“双轨制5+5”的学习模式,课程增加了人工智能(图像识别、无人机、无人驾驶等)以及go语言的相关知识,以拓展大家的知识领域。

0
0
分享到:
评论

相关推荐

    Python-基于PythonDjango用于restful风格API的MockServer

    本文将深入探讨如何利用Python Django来创建一个MockServer,以支持restful风格的API。 1. **什么是MockServer** MockServer是一种模拟实际API行为的工具,它可以在真实的后端服务不可用或正在开发时,为开发者...

    Python库 | python-wink-1.10.4.tar.gz

    REST(Representational State Transfer)是一种软件架构风格,它遵循HTTP协议规范,用于设计网络应用程序。RESTful API设计的核心原则是资源导向,通过HTTP方法(如GET、POST、PUT、DELETE)来操作这些资源。Wink...

    学生管理系统Python源码.rar

    4. RESTful API设计:为了实现与微信小程序和安卓应用的通信,系统可能会提供RESTful API接口,遵循HTTP协议进行数据交换。 5. 微信小程序开发:可能包含小程序的页面设计、事件处理、API调用等,用于用户界面展示和...

    Python.zip

    这个名为"Python.zip"的压缩包包含了一系列关于Python学习的资源,涵盖了从基础到高级的主题,包括Python快速入门、初级课程、RESTful API开发、定向爬虫入门以及Django框架的开发与进阶。 1. **Python快速入门**:...

    flask指南--英文--PDF版本

    《Flask-RESTful 指南》是针对Python Web开发框架Flask的一款扩展插件的详细文档,旨在帮助开发者快速构建RESTful API。这款扩展轻量级且兼容现有的ORM和其他库,它遵循最佳实践,使得设置过程尽可能简单。如果你...

    python_interview_question-master.zip

    二、Python进阶 随着对Python的深入,我们需要掌握更多高级特性: 1. 面向对象编程:包括类的定义、对象的创建、继承、多态、封装等概念。 2. 上下文管理器:理解with语句的工作原理,以及自定义上下文管理器。 3...

    Python库 | sagemcom_api-1.0.5-py3-none-any.whl

    在实际使用过程中,应遵循Sagemcom设备的使用条款和隐私政策,确保合法合规地进行设备访问。同时,考虑到网络安全,不要轻易将API接口暴露在公网,避免被恶意利用。 总的来说,sagemcom_api-1.0.5-py3-none-any....

    falcon_pythonweb框架_

    3. **RESTful API设计**:Falcon鼓励遵循REST原则来构建API,提供了一套简单的路由系统,方便定义资源和处理函数。它支持HTTP方法如GET、POST、PUT、DELETE等,使得API设计更加规范和易于理解。 4. **中间件支持**...

    Python库 | schemathesis-3.0.6.tar.gz

    **Python库Schemathesis...总结,Schemathesis是Python开发者在构建和维护RESTful API时的强大工具,通过自动化测试确保了API的规范性和稳定性。其易用性和可扩展性使得它在API开发的全生命周期中都能发挥重要作用。

    Python 核心编程 第二版.pdf

    - API调用:利用RESTful API与外部服务交互。 4. **多线程编程**: - 线程同步:解决竞态条件问题。 - 并发模式:设计高效的并发程序结构。 5. **图形用户界面编程**: - GUI框架选择:Tkinter、wxPython等。 ...

    后端自我进阶学习pdf

    RESTful API遵循一套标准原则,如CRUD操作(创建、读取、更新、删除),使用HTTP动词(GET、POST、PUT、DELETE)。 5. **并发与多线程**:掌握如何处理并发请求,理解线程、进程的概念,以及如何在Java中使用...

    Python Web 接口开发文档

    ### Python Web 接口开发与测试知识点概览 #### Python 学习必备基础知识 - **Python2与Python3的选择** ... - 设计合理的URL结构,遵循RESTful原则。 - 处理各种HTTP请求方法,返回相应的数据格式。

    python 爬虫(amazon, confluence ...).zip

    Confluence提供RESTful API,允许开发者以JSON格式获取和更新页面、空间、用户等信息。通过Python的requests库,可以构造合适的HTTP请求,获取数据。理解API文档,掌握OAuth认证流程,是成功爬取Confluence数据的...

    基于python模板的药品名称识别系统源码数据库.zip

    为了与其他服务或应用集成,系统可能提供了RESTful API接口,允许外部发送药品名称请求并获取识别结果。这些接口通常遵循HTTP方法(GET、POST等)来实现数据的增删查改。 6. **部署与运行**: 了解如何将Django...

    Python高效开发实战+Django+Tornado+Flask+Twisted源代码

    通过研究这些源代码,开发者能够学习到如何设计数据库模型、实现RESTful API、创建动态网页、进行身份验证和授权,以及优化性能等关键技能。此外,还可以了解到如何利用这些框架处理异步任务、实现WebSocket通信、...

    Python库 | django_ocs_observation_portal-3.5.0-py3-none-any.whl

    4. **API接口**:提供RESTful API,便于与其他系统集成,实现数据的无缝交换。 5. **数据分析集成**:可能集成了数据分析工具,如matplotlib或pandas,以便用户在门户上直接进行初步的数据分析和可视化。 6. **扩展...

    python flaskdemo

    5. **RESTful API**:遵循 REST 设计原则,使用 Flask 的 `url_for()` 函数和 HTTP 方法(GET、POST、PUT、DELETE 等)构建 API。 6. **蓝本(Blueprints)**:对于大型应用,可以使用蓝图来组织和模块化代码。 7....

    毕业设计:基于python+flask+sqlalchemy的课程,学生,老师信息管理系统.zip

    8. **API接口**:为了与其他系统集成,可能提供RESTful API接口,遵循HTTP标准和JSON数据格式。 【开发流程】 1. **环境搭建**:安装Python、Flask、SQLAlchemy等依赖库,配置开发环境。 2. **数据库设计**:确定...

    Python新手使用Django的16堂课.pdf

    Django拥有丰富的第三方库,如Django Rest Framework用于构建RESTful API,Django Channels支持WebSocket等异步通信,Django Debug Toolbar提供调试信息。 16. **持续学习与实践** Django的生态系统不断发展,...

    Python库 | django-connectwise-0.3.91.tar.gz

    ConnectWise提供了丰富的RESTful API,使得开发者能够获取和更新组织内的信息,如客户、服务请求、时间跟踪、发票等。通过这个库,开发者可以轻松地在Django应用中创建、读取、更新和删除ConnectWise中的数据,从而...

Global site tag (gtag.js) - Google Analytics