【Python知识地图】前端与后端交互:AJAX与RESTful API

在现代 Web 开发中,前端和后端的分离是一个常见的架构模式。前端通过 AJAX(Asynchronous JavaScript and XML)与后端进行异步通信,从而实现动态更新页面的功能。RESTful API 是一种常用的 Web 服务接口设计风格,通过 HTTP 协议进行数据传输。本文将详细介绍 AJAX 与 RESTful API 的基本概念及其使用方法,并提供一些示例代码。


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

本专栏介绍:本专栏为Python初学者和中高级开发者提供全面的学习资源。预计收录100篇文章,内容涵盖基础语法、数据结构、面向对象编程、Web开发、数据分析、机器学习等领域。每篇文章都经过精心编写,帮助你快速掌握Python编程技巧。无论初学者还是希望提升技能的开发者,这里都能找到适合你的资源。可点击专栏主页查看所有文章。

在这里插入图片描述

在这里插入图片描述

1. RESTful API 基础

1.1 什么是 RESTful API?

REST(Representational State Transfer)是一种软件架构风格,RESTful API 是遵循 REST 架构风格的 Web 服务接口。RESTful API 使用 HTTP 协议的各种方法(如 GET、POST、PUT、DELETE 等)进行数据操作,并通过 URL 来定位资源。

1.2 RESTful API 的基本操作

  • GET:从服务器获取资源
  • POST:在服务器创建资源
  • PUT:更新服务器上的资源
  • DELETE:删除服务器上的资源

1.3 RESTful API 示例

假设我们有一个用户管理的 RESTful API,支持以下操作:

  • GET /api/users:获取所有用户
  • GET /api/users/{id}:获取指定用户
  • POST /api/users:创建新用户
  • PUT /api/users/{id}:更新指定用户
  • DELETE /api/users/{id}:删除指定用户

2. 使用 Django 创建 RESTful API

2.1 安装 Django REST framework

在使用 Django 创建 RESTful API 之前,需要先安装 Django REST framework。可以使用 pip 命令进行安装:

pip install djangorestframework

2.2 配置 Django REST framework

settings.py 文件中配置 Django REST framework:

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp',
]

2.3 定义模型

models.py 文件中定义用户模型:

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=100)
    email = models.EmailField()
    age = models.IntegerField()

    def __str__(self):
        return self.username

2.4 创建序列化器

serializers.py 文件中创建序列化器:

from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

2.5 创建视图

views.py 文件中创建视图:

from rest_framework import viewsets
from .models import User
from .serializers import UserSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

2.6 配置路由

urls.py 文件中配置路由:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from . import views

router = DefaultRouter()
router.register(r'users', views.UserViewSet)

urlpatterns = [
    path('api/', include(router.urls)),
]

2.7 运行服务器

在命令行中运行以下命令启动 Django 服务器:

python manage.py runserver

现在,RESTful API 已经可以通过 http://127.0.0.1:8000/api/users/ 进行访问。

3. 使用 AJAX 与 RESTful API 交互

3.1 什么是 AJAX?

AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器进行异步通信的技术。AJAX 使用 JavaScript 的 XMLHttpRequest 对象或现代浏览器提供的 fetch API 进行异步请求,并处理服务器的响应。

3.2 使用 XMLHttpRequest 进行 AJAX 请求

以下示例演示了如何使用 XMLHttpRequest 进行 AJAX 请求:

<!DOCTYPE html>
<html>
<head>
    <title>AJAX Example</title>
    <script>
        function loadUsers() {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'http://127.0.0.1:8000/api/users/', true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    var users = JSON.parse(xhr.responseText);
                    var userList = document.getElementById('user-list');
                    userList.innerHTML = '';
                    users.forEach(function(user) {
                        var li = document.createElement('li');
                        li.textContent = user.username + ' (' + user.email + ')';
                        userList.appendChild(li);
                    });
                }
            };
            xhr.send();
        }
    </script>
</head>
<body>
    <h1>AJAX Example</h1>
    <button onclick="loadUsers()">Load Users</button>
    <ul id="user-list"></ul>
</body>
</html>

3.3 使用 fetch API 进行 AJAX 请求

以下示例演示了如何使用 fetch API 进行 AJAX 请求:

<!DOCTYPE html>
<html>
<head>
    <title>AJAX Example</title>
    <script>
        async function loadUsers() {
            const response = await fetch('http://127.0.0.1:8000/api/users/');
            const users = await response.json();
            const userList = document.getElementById('user-list');
            userList.innerHTML = '';
            users.forEach(user => {
                const li = document.createElement('li');
                li.textContent = `${user.username} (${user.email})`;
                userList.appendChild(li);
            });
        }
    </script>
</head>
<body>
    <h1>AJAX Example</h1>
    <button onclick="loadUsers()">Load Users</button>
    <ul id="user-list"></ul>
</body>
</html>

3.4 发送 POST 请求

以下示例演示了如何使用 fetch API 发送 POST 请求:

<!DOCTYPE html>
<html>
<head>
    <title>AJAX Example</title>
    <script>
        async function createUser() {
            const response = await fetch('http://127.0.0.1:8000/api/users/', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    username: 'newuser',
                    email: 'newuser@example.com',
                    age: 20
                })
            });
            const user = await response.json();
            console.log('Created user:', user);
        }
    </script>
</head>
<body>
    <h1>AJAX Example</h1>
    <button onclick="createUser()">Create User</button>
</body>
</html>

3.5 发送 PUT 请求

以下示例演示了如何使用 fetch API 发送 PUT 请求:

<!DOCTYPE html>
<html>
<head>
    <title>AJAX Example</title>
    <script>
        async function updateUser(userId) {
            const response = await fetch(`http://127.0.0.1:8000/api/users/${userId}/`, {
                method: 'PUT',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    username: 'updateduser',
                    email: 'updateduser@example.com',
                    age: 25
                })
            });
            const user = await response.json();
            console.log('Updated user:', user);
        }
    </script>
</head>
<body>
    <h1>AJAX Example</h1>
    <button onclick="updateUser(1)">Update User</button>
</body>
</html>

3.6 发送 DELETE 请求

以下示例演示了如何使用 fetch API 发送 DELETE 请求:

<!DOCTYPE html>
<html>
<head>
    <title>AJAX Example</title>
    <script>
        async function deleteUser(userId) {
            const response = await fetch(`http://127.0.0.1:8000/api/users/${userId}/`, {
                method: 'DELETE'
            });
            if (response.status === 204) {
                console.log('Deleted user');
            }
        }
    </script>
</head>
<body>
    <h1>AJAX Example</h1>
    <button onclick="deleteUser(1)">Delete User</button>
</body>
</html>

总结

AJAX 和 RESTful API 是现代 Web 开发中常用的技术,通过它们可以实现前端与后端的异步通信。本文详细介绍了 AJAX 与 RESTful API 的基本概念及其使用方法,并提供了一些示例代码,包括使用 Django 创建 RESTful API 和使用 XMLHttpRequestfetch API 进行 AJAX 请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值