使用 REST API 的优势:从简化方法到专业实践

霞舞
发布: 2025-07-19 16:02:11
原创
959人浏览过

使用 rest api 的优势:从简化方法到专业实践

本文旨在阐述使用 REST API 相较于简单 $_POST 处理方式的优势。我们将深入探讨 CORS 头部的作用,以及如何使用 Fetch API 获取 JSON 结果。此外,还会简要对比 SOAP 和 gRPC,帮助开发者选择更现代化的 API 构建方案。

为什么选择 REST API?

虽然直接处理 $_POST 参数并使用 json_encode 返回数据的方式简单快捷,但它缺乏标准化的结构和安全性。REST API 提供了一种更规范、更安全、更易于维护的 API 构建方法。

安全性:CORS 头部的作用

你提到的文章中设置的头部,很可能与跨域资源共享 (CORS) 有关。CORS 是一种安全机制,用于控制哪些网站可以访问你的 API。通过设置 Access-Control-Allow-Origin 头部,你可以限制只有指定的域名才能发起请求,从而提高 API 的安全性。

例如,如果你只想允许 https://yourdomain.com 访问你的 API,你可以设置如下头部:

header("Access-Control-Allow-Origin: https://yourdomain.com");
登录后复制

更详细的 CORS 原理和配置,可以参考 Mozilla 开发者网络的相关文档:https://www.php.cn/link/e61b865c4e3287487f1b8feb13d6215c

与 JavaScript Fetch API 的兼容性

将你的代码转换为 REST API 后,仍然可以使用 JavaScript 的 Fetch API 获取 JSON 结果。关键在于确保以下两点:

  1. 请求头 (Request Header): 在你的 JavaScript 代码中,设置 Accept HTTP 头部为 application/json,表明你希望接收 JSON 格式的数据。

    fetch('your_api_endpoint', {
      method: 'GET',
      headers: {
        'Accept': 'application/json'
      }
    })
    .then(response => response.json())
    .then(data => {
      // 处理 JSON 数据
      console.log(data);
    });
    登录后复制
  2. 响应头 (Response Header): 你的 API 需要在响应中设置 Content-Type 头部为 application/json,告知客户端返回的数据是 JSON 格式。

    header('Content-Type: application/json');
    echo json_encode($response);
    登录后复制

    你的 json_response 函数应该包含设置 Content-Type 头部的逻辑。

    职优简历
    职优简历

    一款专注于互联网从业者的免费简历制作工具

    职优简历 233
    查看详情 职优简历

SOAP vs. gRPC:API 技术选型

你提到了 SOAP 客户端。SOAP 是一种较早的 Web 服务协议,现在更多地应用于遗留系统。如果你正在构建新的 API,建议考虑更现代化的方案,例如 gRPC。

gRPC 基于 Protocol Buffers,提供高性能、强类型和双向流等特性。它更适合构建微服务架构和高性能应用。

代码示例与改进建议

你的示例代码展示了基本的 API 逻辑。以下是一些可以改进的地方:

  1. HTTP 方法: 你的 API 似乎只使用 $_REQUEST 来获取参数,这不够清晰。REST API 应该使用不同的 HTTP 方法 (GET, POST, PUT, DELETE) 来表示不同的操作。例如,DELETE 方法应该用于删除操作。

  2. 状态码: 使用更精确的 HTTP 状态码来表示不同的结果。例如,200 OK 表示成功,201 Created 表示资源已创建,400 Bad Request 表示请求错误,404 Not Found 表示资源未找到,500 Internal Server Error 表示服务器内部错误。

  3. 错误处理: 提供更详细的错误信息,方便客户端调试。

以下是一个改进后的示例,展示了如何使用 DELETE 方法和更精确的状态码:

<?php

require_once __DIR__ . '/../../init.php';
require_once env('SHOP_ROOT') . '/inc_functions.php';

// 假设使用 DELETE 方法删除上传文件
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {

    $token = $_GET['token'] ?? null;  // 使用 $_GET 获取 token
    $email = $_GET['user'] ?? '';      // 使用 $_GET 获取 user
    $uploadId = intval($_GET['uploadId'] ?? 0); // 使用 $_GET 获取 uploadId

    if ($token !== env('API_TOKEN')) {
        http_response_code(401); // Unauthorized
        json_response(false, ['message' => 'Incorrect token']);
        exit;
    }

    $selClientQ = <<<SQL
        SELECT id_client
        FROM client
        WHERE
            email = ? AND
            is_active = 1 AND
            is_banned = 0
    SQL;

    $clientId = data_select($selClientQ, $email)[0]['id_client'] ?? 0;

    if (!$clientId) {
        http_response_code(404); // Not Found
        json_response(false, ['message' => 'User not found']);
        exit;
    }

    $delClientUploadQ = <<<SQL
        DELETE FROM client_uploads WHERE client_id = ? AND id = ?
    SQL;

    $isDeleted = data_delete($delClientUploadQ, $clientId, $uploadId);

    if ($isDeleted) {
        http_response_code(204); // No Content (删除成功,没有内容返回)
        //  json_response(true, ['message' => 'Upload deleted successfully']);  //删除成功后通常不返回内容
    } else {
        http_response_code(500); // Internal Server Error
        json_response(false, ['message' => 'Failed to delete upload']);
    }

} else {
    http_response_code(405); // Method Not Allowed
    header('Allow: DELETE');
    json_response(false, ['message' => 'Method not allowed']);
}
登录后复制

注意事项:

  • 在生产环境中,务必对 API 进行身份验证和授权,防止未经授权的访问。
  • 使用 HTTPS 加密 API 通信,保护数据的安全。
  • 记录 API 的访问日志,方便排查问题和进行安全审计。
  • 对 API 进行限流,防止恶意攻击。

总结

采用 REST API 相比简单的 $_POST 处理方式,能够提供更规范、更安全、更易于维护的 API。通过正确配置 CORS 头部,可以增强 API 的安全性。同时,REST API 也与 JavaScript 的 Fetch API 良好兼容,方便前端开发。在技术选型方面,应根据实际需求选择合适的 API 技术,例如 gRPC 在高性能场景下更具优势。通过遵循 RESTful 原则,并结合安全性、错误处理等方面的最佳实践,可以构建出高质量的 API。

以上就是使用 REST API 的优势:从简化方法到专业实践的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号