一、了解百度文心一言接口
1.1 什么是百度文心一言接口
百度文心一言接口是一个提供随机语录的开放接口,包含励志、动画、漫画、游戏、小说等多种类型的语录。我们可以通过请求该接口获取一句语录并展示在网页上。
1.2 接口请求地址
接口请求地址为:https://api.wenxinlingdu.com/yiyan/api.php
1.3 请求参数
请求参数主要包括:
type:语录类型
charset:返回编码
encode:请求编码
例如,请求一句励志语录的地址为:
https://api.wenxinlingdu.com/yiyan/api.php?charset=utf-8&encode=json&type=lx
二、使用PHP获取文心一言接口随机语录
2.1 发送请求获取随机语录数据
为了从文心一言接口获取随机语录,我们需要先发送HTTP请求。在PHP中,我们可以使用cURL函数库发送HTTP请求。cURL库支持多种协议,包括HTTP、HTTPS、FTP等。它还支持POST、COOKIE、认证、代理等一系列功能,非常强大。
以下是使用cURL函数向文心一言接口发送GET请求,并获取返回数据的基本操作代码:
$url = 'https://api.wenxinlingdu.com/yiyan/api.php?charset=utf-8&encode=json&type=lx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
if(curl_errno($ch)){
// 发生错误时打印错误信息
echo 'Error:'.curl_error($ch);
}
curl_close($ch);
echo $response;
在这段代码中,我们首先定义了要请求的文心一言接口地址$url,然后使用curl_init()函数初始化一个cURL会话。接下来,使用curl_setopt()函数设置相关参数,包括请求的URL、返回结果是否要输出等。最后,使用curl_exec()函数发送请求并获取返回结果。如果请求失败,我们使用curl_errno()函数获取错误码并将错误信息打印出来。
2.2 请求参数的过滤与校验处理
在请求文心一言接口时,我们需要传递一些参数,如请求的语录类型、返回编码等。但在传递这些参数之前,我们需要对它们进行过滤和校验处理,以确保参数的合法性和安全性。
对于字符型参数,我们需要判断其长度和格式是否符合要求,例如:
<?php
function checkType($type){
// 判断类型是否为空
if(!$type){
return '类型不能为空!';
}
// 判断类型长度是否符合要求
if(strlen($type) > 2){
return '类型长度不能超过2个字符!';
}
// 判断类型是否为预定义类型
$types = array('lx', 'dy', 'my', 'rm', 'xs', 'gc', 'yl', 'ys', 'qt');
if(!in_array($type, $types)){
return '不支持的类型!';
}
// 参数合法,返回null
return null;
}
?>
在这段代码中,我们定义了一个checkType()函数,用于对传入的类型参数进行过滤和校验处理。首先,我们判断该参数是否为空;然后,我们判断其长度是否超过2个字符;最后,我们判断其是否为预定义类型之一。如果三个条件都不满足,则返回null,表示该参数合法。
对于数字型参数,我们需要判断其是否为数字,以及是否在合法范围内,例如:
<?php
function checkNum($num){
// 判断参数是否为空
if(!$num){
return '参数不能为空!';
}
// 判断参数是否为数字
if(!is_numeric($num)){
return '参数不是数字!';
}
// 判断参数是否在合法范围内
if($num < 0.1 || $num > 1){
return '参数应在0.1-1之间!';
}
// 参数合法,返回null
return null;
}
?>
在这段代码中,我们定义了一个checkNum()函数,用于对传入的数字型参数进行过滤和校验处理。首先,我们判断该参数是否为空;然后,我们判断其是否为数字;最后,我们判断其是否在合法范围内。如果三个条件都不满足,则返回null,表示该参数合法。
三、自定义过滤与校验处理
3.1 对返回结果进行校验处理
在获取文心一言接口返回结果后,我们还需要对其进行校验处理,以确保返回结果的数据格式正确且不包含恶意代码。
以下是对返回结果进行校验处理的基本操作代码:
$result = json_decode($response);
if(!$result){
echo '返回结果为空或格式不正确!';
exit;
}
if(isset($result->code)){
echo '返回结果中包含错误代码:'.$result->code.','.$result->msg;
exit;
}
if(isset($result->result) && !$result->result){
echo '返回结果中的result字段为空!';
exit;
}
在这段代码中,我们首先使用json_decode()函数将返回结果转换成JSON格式对象,然后判断是否为空或格式不正确。接下来,如果返回结果中包含错误代码,则将错误代码和错误信息打印出来;如果返回结果中的result字段为空,则提示返回结果异常。
3.2 定义自定义过滤与校验函数
在上一节中,我们对接口返回结果进行了基本的校验处理。但不同的API接口返回的结果可能存在差异,因此我们需要定义自定义过滤与校验函数以适应不同的API接口。
以下是定义自定义过滤与校验函数的基本操作代码:
$url = 'https://api.wenxinlingdu.com/yiyan/api.php?charset=utf-8&encode=json&type=lx';
$type = 'lx'; // 语录类型
$charset = 'utf-8'; // 返回编码
$encode = 'json'; // 请求编码
$num = 0.6; // 概率值
// 参数校验
if($error = checkType($type)){
echo $error;
exit;
}
if($error = checkNum($num)){
echo $error;
exit;
}
// 发送HTTP请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
if(curl_errno($ch)){
echo 'Error:'.curl_error($ch);
exit;
}
curl_close($ch);
// 对返回结果进行校验处理
if(!$result = my_filter($response)){
echo '返回结果为空或格式不正确!';
exit;
}
if(isset($result->code)){
echo '返回结果中包含错误代码:'.$result->code.','.$result->msg;
exit;
}
if(isset($result->result) && !$result->result){
echo '返回结果中的result字段为空!';
exit;
}
// 自定义过滤与校验函数
function my_filter($response){
$result = json_decode($response);
if(!$result){
return false;
}
return $result;
}
在这段代码中,我们首先定义了一些接口请求参数,包括语录类型、返回编码、请求编码、概率值。接下来,我们对参数进行了校验处理,如果存在异常,则打印错误信息并退出;否则,我们发送HTTP请求并获取返回结果。最后,我们使用自定义过滤与校验函数my_filter()对返回结果进行处理。在my_filter()函数中,我们首先使用json_decode()函数将返回结果转换成JSON格式对象,然后判断是否为空或格式不正确。如果结果正确,则返回该结果对象;否则,返回false。
四、结语
在PHP中使用百度文心一言接口获取随机语录,需要实现参数的过滤与校验、HTTP请求发送和返回结果处理等多个步骤。在实际开发中,我们需要根据不同的接口定义不同的过滤与校验函数,并进行相关的异常处理,以确保接口请求的正确性和安全性。