1.什么是百度文心一言API?
百度文心一言API是一个随机语录接口,其来源于文心雕龙中的名言,包含动画、漫画、游戏、小说等各方面的句子,用于提升用户体验。用户可以通过访问API接口,获得一条随机的语录。
2.如何访问百度文心一言API?
2.1 API请求地址和参数说明
百度文心一言API请求地址:
https://v1.hitokoto.cn/
百度文心一言API请求参数如下:
c:分类,可选参数(a - 动画,b - 漫画,c - 游戏,d - 小说,e - 原创,f - 来自网络)。
encode:返回的字符集,可选参数(json - JSON格式,text - 纯文本格式,jsonp - JSONP格式)。
charset:返回的字符编码,可选参数(utf-8 - UTF-8编码,gbk - GBK编码,big5 - Big5编码)。
callback:JSONP格式回调函数名,可选参数。
2.2 API访问鉴权
在使用百度文心一言API时,需要进行访问鉴权,以保证安全性。具体方式如下:
首先,在https://hitokoto.cn/api中找到“请求地址”和“请求参数”,例如,请求地址为“https://v1.hitokoto.cn/”,请求参数为“c、encode、charset、callback”。
然后,将请求地址和请求参数组成请求URL。
接下来,用您的app_secret与请求URL进行HMAC-SHA1加密,生成签名。
最后,将生成的签名作为请求头(Authorization)发送请求。
具体的PHP代码如下:
/**
* 签名生成函数
* @param $app_secret应用秘钥
* @param $url API请求URL
*/
function sign($app_secret, $url)
{
$url = parse_url($url);
$params = array();
parse_str($url['query'], $params); //获取参数
ksort($params); //参数按字典排序
$paramString = http_build_query($params); //将参数拼接成字符串
$stringToSign = $url['path'].":".$paramString;
$signature = base64_encode(hash_hmac('sha1', $stringToSign, $app_secret, true)); //使用HMAC-SHA1进行加密
return $signature;
}
// API请求地址和请求参数
$url = "https://v1.hitokoto.cn/?encode=json";
$app_secret = "your_app_secret"; //应用秘钥,需要替换成您自己的秘钥
$authorization = "hitokoto ".sign($app_secret, $url); //请求头Authorization
$headers = array("Authorization: ".$authorization);
// 使用curl发送请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
echo $response; //输出API返回结果
2.3 API返回结果
百度文心一言API返回的结果包含以下字段:
id:句子的唯一ID。
hitokoto:返回的句子内容。
type:句子的类型。
from:句子的出处。
creator:句子的作者。
created_at:句子的创建时间。
3.实战:PHP代码调用百度文心一言API
在PHP应用中,我们可以通过curl函数访问百度文心一言API,具体代码如下:
$url = "https://v1.hitokoto.cn/?encode=json";
$app_secret = "your_app_secret"; //应用秘钥,需要替换成您自己的秘钥
$authorization = "hitokoto ".sign($app_secret, $url); //请求头Authorization
$headers = array("Authorization: ".$authorization);
// 使用curl发送请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true); //转换为数组
if($result && isset($result['hitokoto'])){
echo "".$result['hitokoto']."";
}else{
echo "获取句子失败";
}
3.1 完整代码
完整代码如下:
/**
* 签名生成函数
* @param $app_secret应用秘钥
* @param $url API请求URL
*/
function sign($app_secret, $url)
{
$url = parse_url($url);
$params = array();
parse_str($url['query'], $params); //获取参数
ksort($params); //参数按字典排序
$paramString = http_build_query($params); //将参数拼接成字符串
$stringToSign = $url['path'].":".$paramString;
$signature = base64_encode(hash_hmac('sha1', $stringToSign, $app_secret, true)); //使用HMAC-SHA1进行加密
return $signature;
}
$url = "https://v1.hitokoto.cn/?encode=json";
$app_secret = "your_app_secret"; //应用秘钥,需要替换成您自己的秘钥
$authorization = "hitokoto ".sign($app_secret, $url); //请求头Authorization
$headers = array("Authorization: ".$authorization);
// 使用curl发送请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true); //转换为数组
if($result && isset($result['hitokoto'])){
echo "".$result['hitokoto']."";
}else{
echo "获取句子失败";
}
4.总结
本文介绍了如何使用PHP实现百度文心一言API的访问鉴权,并调用API获取随机语录。具体而言:
百度文心一言API是一个随机语录的接口,通过访问该接口可以获得一条随机的语录。
在使用百度文心一言API时,需要进行访问鉴权,以确保安全性。
具体的PHP访问鉴权方式是通过HMAC-SHA1算法实现的。
使用curl函数可以方便地调用百度文心一言API。