利用讯飞翻译写一段代码,包含前后端
时间: 2024-02-16 13:35:48 浏览: 118
iflyTranslate.zip
以下是利用讯飞翻译API实现前后端翻译的代码示例:
前端代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>讯飞翻译API示例</title>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>
<body>
<input type="text" id="inputText" placeholder="请输入要翻译的内容">
<button id="translateBtn">翻译</button>
<div id="result"></div>
<script type="text/javascript">
$(function() {
$('#translateBtn').click(function() {
var text = $('#inputText').val();
$.ajax({
url: '/translate',
type: 'POST',
data: {text: text},
success: function(data) {
$('#result').html(data);
}
});
});
});
</script>
</body>
</html>
```
后端代码:
```python
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
# 讯飞翻译API的接口地址和密钥
URL = 'http://itrans.xfyun.cn/v2/its'
APPID = 'your_appid'
API_KEY = 'your_api_key'
# 处理翻译请求的路由
@app.route('/translate', methods=['POST'])
def translate():
text = request.form['text']
result = request_xfyun_api(text)
return jsonify(result)
# 调用讯飞翻译API进行翻译
def request_xfyun_api(text):
headers = {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
'X-Appid': APPID,
'X-CurTime': str(int(time.time())),
'X-Param': 'eyJhY2NvdW50IjoiZnJlZSJ9',
'X-CheckSum': ''
}
# 计算X-CheckSum
param = {'type': 'auto', 'text': text}
param_str = json.dumps(param, ensure_ascii=False)
checksum_str = API_KEY + str(int(time.time())) + param_str
checksum = hashlib.md5(checksum_str.encode('utf-8')).hexdigest()
headers['X-CheckSum'] = checksum
# 发送POST请求
response = requests.post(URL, headers=headers, data=param_str.encode('utf-8'))
result = response.json()
if result['code'] == '0':
return result['data']['result']
else:
return '翻译失败'
if __name__ == '__main__':
app.run()
```
说明:
1. 前端页面包含一个输入框和一个翻译按钮,点击按钮会向后端发送POST请求并将输入框中的内容作为请求参数。
2. 后端使用Flask框架搭建Web应用,定义了一个路由`/translate`来处理翻译请求。
3. 在`request_xfyun_api`函数中,构造了请求头,包括X-Appid、X-CurTime、X-Param和X-CheckSum四个参数,其中X-Param是固定的,X-CheckSum需要根据API密钥和请求参数计算出。
4. 发送POST请求时,需要将请求参数转换为JSON字符串,并将其转换为UTF-8编码的字节流。
5. 返回的翻译结果是一个JSON对象,其中code为0表示翻译成功,data.result为翻译结果。如果翻译失败,返回字符串“翻译失败”。
6. 前端页面收到后端返回的结果后,将其显示在页面上。
阅读全文