泽兴芝士网

一站式 IT 编程学习资源平台

一文搞懂 API 和 RESTful API区别

后端小伙伴们经常会遇到要写api接口,有时候又会遇到写需要符合规范的restful api,今天这篇文章就来说说它们之间的区别。

API 基本概念

API(应用程序编程接口)是一套预先定义的函数,协议和工具,用于构建软件应用程序。它允许不同的软件系统相互通信和交互。

RESTful API 基本概念

RESTful API 是一种基于HTTP协议的API,遵循REST架构风格,使用HTTP方法(GET、POST、PUT、DELETE等)来执行操作。

好的,让我们通过一个简单的示例来理解 API 和 RESTful API 的区别和用法。

API 示例:一个简单的数学计算器

假设我们有一个数学计算器 API,它提供两个功能:加法和乘法。

非RESTful API 示例(基于函数的API)

在非RESTful API中,我们可能会定义两个不同的端点(URL)来处理加法和乘法。

Python (Flask) 示例:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 加法运算
@app.route('/add', methods=['POST'])
def add():
    data = request.json
    result = data['a'] + data['b']
    return jsonify({'result': result})

# 乘法运算
@app.route('/multiply'、「methods=['POST'])
def multiply():
    data = request.json
    result = data['a'] * data['b']
    return jsonify({'result': result})

if __name__ == '__main__':
    app.run(debug=True)

调用示例:

  • 加法:POST /add {"a": 1, "b": 2}
  • 乘法:POST /multiply {"a": 3, "b": 4}

RESTful API 示例

在RESTful API中,我们会使用统一的资源标识符(URI)和HTTP方法来处理不同的操作。

Python (Flask) 示例:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 计算资源
@app.route('/calculate', methods=['POST'])
def calculate():
    data = request.json
    operation = data['operation']
    a = data['a']
    b = data['b']
    
    if operation == 'add':
        result = a + b
    elif operation == 'multiply':
        result = a * b
    else:
        return jsonify({'error': 'Invalid operation'}), 400

    return jsonify({'result': result})

if __name__ == '__main__':
    app.run(debug=True)

调用示例:

  • 加法:POST /calculate {"operation": "add", "a": 1, "b": 2}
  • 乘法:POST /calculate {"operation": "multiply", "a": 3, "b": 4}

区别和总结

  • 非RESTful API:每个操作一个端点,通常基于函数或方法。
  • RESTful API:使用统一的资源标识符和HTTP方法来处理不同的操作,更符合REST架构风格。

1. RESTful API 设计规范

RESTful API 设计应遵循以下规范:

  1. 使用HTTP方法:GET(获取资源)、POST(创建新资源)、PUT(更新现有资源)、DELETE(删除资源)。
  2. 无状态:每个请求包含所有必要的信息,服务器不需要保存会话信息。
  3. 统一接口:每个资源都有一个唯一的URI,资源的状态可以通过HTTP方法来改变。
  4. 可缓存:数据应该被标记为可缓存或不可缓存,这样客户端就可以缓存数据以提高效率。

创作不易,如果这篇文章对你有用,欢迎点赞关注加评论哦。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言