PHP:写接口与接口的调用(完整版,封装公共方法)

说明:绑定的资源详细展示了两个项目的接口、接口调用的实现,已经数据库的连接,目录展示更加一目了然,有需要可以下载资源,实际文章已经描述的很详细了

一、A页面-发送请求页面

1、说明

  • 发送请求部分,去调用接口的部分(语言不限,这里使用php)
  • 这里使用提交按钮发送请求
  • 初始数据为对象,通过json进行发送
  • 必要数据:接口的url;接口方提供的AccessKeyId,AccessKeySecret(可生成随机数,只要请求接口方和接口方对应便可发送请求;请求的参数
  • 通过cURL完成请求

2、代码


 



 

    
    
    
    Document

 

    

二、B页面-接口页面

1、说明

  • 调用公共方法,验证头信息正确性以及必填项是否
  • 提供必填参数,传递给公共方法进行验证
  • 获取解析后的参数,进行赋值
  • 执行数据库操作
  • 将请求的结果返回给A页面

2、代码

 $data, 'msg' => 'success']);
?>

三、B页面-公共方法页面

1、说明

  • 封装B页面接收A页面的公共方法
  • 检测A页面发送请求时传递的头信息,主要是检测AccessKeyId和AccessKeySecret是否和设定的一致
  • 检测必填项是否填写
  • 解析A页面传递的参数,直接供B页面使用

2、代码

 'Method Not Allowed']);
            exit;
        }

        $content_type = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '';
        if (stripos($content_type, 'application/json') !== 0) {
            http_response_code(415);
            echo json_encode(['error' => 'Unsupported Media Type']);
            exit;
        }
    }

    // 获取并解析请求体中的JSON数据
    public static function getJsonRequestBody() {
        $input_json = file_get_contents('php://input');
        $input_data = json_decode($input_json, true);
        return $input_data;
    }

    // 检查请求体中是否有必需的参数
    public static function checkRequiredParameters($input_data, $required_params) {
        foreach ($required_params as $param) {
            if (!isset($input_data[$param])) {
                http_response_code(400);
                echo json_encode(['error' => 'Invalid Request Body']);
                exit;
            }
        }
    }

    // 处理API请求的入口方法
    public static function handleRequest($required_params) {
        // 设置响应头
        header('Content-Type: application/json');

        // 验证AccessKey
        $access_key_id = isset($_SERVER['HTTP_ACCESSKEYID']) ? $_SERVER['HTTP_ACCESSKEYID'] : '';
        $access_key_secret_provided = isset($_SERVER['HTTP_ACCESSKEYSECRET']) ? $_SERVER['HTTP_ACCESSKEYSECRET'] : '';
        if (!self::validateAccessKeys($access_key_id, $access_key_secret_provided)) {
            http_response_code(401);
            echo json_encode(['error' => 'Unauthorized']);
            exit;
        }

        // 检查请求方法和Content-Type
        self::checkRequestMethodAndContentType();

        // 获取并解析请求体中的JSON数据
        $input_data = self::getJsonRequestBody();

        // 检查请求体中是否有必需的参数
        self::checkRequiredParameters($input_data, $required_params);

        // 返回解析后的请求数据
        return $input_data;
    }
}
?>

四、未封装请求参考路径

​​​​​​​PHP:接口请求与被请求_php 请求接口-CSDN博客

你可能感兴趣的:(php,android,开发语言)