1后端接口
抛json数据出来给到前端使用
views.pyfrom django.http import HttpResponse, JsonResponse
import json
# Create your views here.
def responseJson(request):
# result = json.dumps({'name': '老谢你好'})
# return HttpResponse(result)
return JsonResponse({'name': '老谢你好'})
urls.py
urlpatterns += [
path('api/responseJson',responseJson)
]
2.前端 (VUE3 ES6写法)axios设置get请求获取接口data信息
import axios from 'axios';
let user = '测试数据'
const userService = axios.create({
baseURL: 'http://127.0.0.1:8000',
//定义个请求头
})
//console.log(userService);
export { user, userService}
import { userService} from '../api/user'
let user=ref('')
userService({
methon: 'GET',
url: '/api/responseJson',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
}
}).then((res) => {
user.value=res.data
}).catch((error) => {
console.error = (msg, ...optionalParams) => { // 重写 console.error
console.log(msg, ...optionalParams); // 打印到console的信息正常显示
return false; // 返回false,使得控制台不会显示红色错误
};
console.error('用户接口请求失败:', error);
})
- 视图类定义:一个类同时处理post GET delete put等等交互请求
1后端代码示例
# 使用类方法获得装装饰器,去除csrf保护 方便调试
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt, "dispatch")
class GoodsApi(View):
def get(self, request):
return JsonResponse({'respondL': '这是get请求'})
def post(self, request):
return JsonResponse({'respondL': '这是post请求'})
def put(self, request):
return JsonResponse({'respondL': '这是put请求'})
def delete(self, request):
return JsonResponse({'respondL': '这是delect请求'})
代码解释:
这段代码使用了Django框架的装饰器特性。装饰器是一种可以修改函数或类的行为的工具,通常用于添加额外的功能,如日志记录、权限检查或副作用等。
具体来说,@method_decorator(csrf_exempt, 'dispatch')这行代码创建了一个装饰器,这个装饰器将应用到类中的所有方法上,增强这些方法的行为。在这种情况下,csrf_exempt装饰器被应用到每个方法上,这意味着每个方法的执行都将免除CSRF(跨站请求伪造)保护。
CSRF是一种攻击手段,攻击者通过在他们控制的网站上放置恶意代码,让用户的浏览器向目标网站发送请求。如果目标网站没有正确的CSRF保护,用户的登录状态就会被攻击者利用,执行他们未授权的操作。因此,对大多数敏感操作来说,如修改或删除数据,都需要进行CSRF保护。
然而,在某些情况下,你可能需要对特定的视图函数免除这种保护,例如在测试或者调试阶段。这就是csrf_exempt装饰器的主要用途。在这个装饰器中,你可以选择免除某个视图函数的CSRF保护。
CSRF概念解释
CSRF(Cross-site request forgery),也被称为跨站请求伪造,是一种攻击方法。攻击者通过伪造用户的浏览器请求,向用户曾经认证访问过的网站发送请求,使目标网站误以为是用户的真实操作而去执行命令。这种攻击方法常用于盗取账号、转账、发送虚假消息等。与跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,而CSRF利用的是网站对用户网页浏览器的信任。CSRF攻击者没有盗取用户的cookie,而是直接利用浏览器存储的cookie让用户去执行某个动作。网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。因此,防御CSRF攻击的一种方法是在发送敏感操作请求时,加入随机数或时间戳等验证方式,以确保请求是来自用户的真实操作。 |