前言
我们经常在前端写一些ajax请求但是一直出现跨域的问题,所以我们就把目标放到了后端,可是发现根本不知道怎么去使用第三方接口
提示:以下是本篇文章正文内容,我们就用名人名言的api作为案例
1.创建view视图
这一步是为了在后端将数据请求到,我们直接上代码
# 名人名言接口
def famous(request):
url = 'https://v1.alapi.cn/api/mingyan' #api链接
'''
我用的这个接口没有什么apikey或者参数
如果有的话直接写上参数,类似于这样
apikey = 'chgaxvsf88f3858a15fa4426f4cbdd4d2a02b92ee0747f3'
area = "人生"
areaID = "45"
data = {
"apiKey":apikey,
"area":area,
"areaID":areaID,
}
将数据封装成人家接口定义的格式,请求数据改成以下样子
wb_data = requests.get(url,apikey,data)
'''
wb_data = requests.get(url) #引入requests库来请求数据
result = wb_data.json() #将请求的数据转换为json格式
return JsonResponse(json.dumps(result), safe=False) #用json响应出去,顺便格式化数据
2.然后编写url用来前后端交互数据
url:
path('famous/', views.famous, name='famous')
然后在你需要用到的页面,用ajax请求数据(我这里是jq)
$.ajax({
url:"{% url 'famous' %} ",
type:"get",
contentType: "application/json;charset=UTF-8",
dataType:"json",
success:function (data) {
let famous_data = jQuery.parseJSON(data);
$(".one-poem").html(famous_data.data.content)
}
下面就是响应到的数据
3.可能出现的bug
此错误的意思是响应的对象不可序列化
所以我们一定要先把响应结果转为json,再去格式化响应内容,也就是
先转换为json格式
然后再格式化数据,
最后才发送出去数据