django restful 请求_极大简化Django开发,让程序员没代码敲的DRF框架

前置基础知识

web开发的两种模式

前后端不分离前后端分离

1. 前后端不分离

a8431314910f7bf980c3663a4e665257.png

完整的html页面是在后端生成的,后端给前端返回完整的页面,前端只是进行展示,前端与后端的耦合度很高。

缺点:只适用于纯网页的应用。

优点:有利于网站的SEO优化

2. 前后端分离

30f5186c706801e0b9025bf5d9107101.png

完整的html页面是在前端生成的,后端只给前端返回所需的数据,前端将数据填充在页面上,前端与后端的耦合度很低。

优点:可以对接不同类型的客户端。

缺点:不利于SEO优化

3.API: 在前后端分离开发模式中,我们通常将后端开发的每个视图都称为一个接口或者API。

4.RESTful设计风格

统一的接口设计方式就是普遍采用的RESTful API设计风格

Restful风格设计-关键点

  • URL地址尽量使用名词复数,不要使用动词
  • 访问同一个URL地址,采用不同的请求方式,代表要执行不同的操作。(GET)获取 POST(新增) PUT(修改)DELETE(删除) 不常用:PATCH(修改) HEAD(只返回请求头没有请求体) OPTIONS(获取信息)
  • 过滤参数可以放在查询字符串中。常见的参数:
?limit=10:指定返回记录的数量?offset=10:指定返回记录的开始位置。?page=2&pagesize=100:指定第几页,以及每页的记录数。?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
  • 针对不同操作,服务器向用户返回不同的响应数据。一般遵循以下规范:
1. 获取一组数据,返回一组数据2. 获取指定数据,返回指定数据3. 新增数据,返回新增的数据4. 修改数据,返回修改的数据5. 删除数据,返回空
  • 服务器返回的响应数据格式,应该尽量使用JSON
  • 响应状态码,服务器向客户端返回的状态码和提示信息,常见的状态码如下:
200 OK - [GET/PUT]:服务器成功返回用户请求的数据201 CREATED - [POST]:用户新建数据成功。204 NO CONTENT - [DELETE]:用户删除数据成功。400 INVALID REQUEST - [POST/PUT]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。。500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

了解:

  1. 域名:使用专有域名
  2. 版本:将版本信息放在url地址
  3. 错误:将错误信息返回
  4. 在访问api接口时,将和接口相关的其他API接口的地址也在响应数据中返回

使用Django开发REST API

需求:    设计一套符合RestAPI风格的接口,提供以下5个接口:        1. 获取所有直播间数据:GET /lives/        2. 新增一本直播间数据:POST /lives/        3. 获取指定的直播间数据(根据id):GET /lives/(?Pd+)/        4. 修改指定的直播间数据(根据id):PUT /lives/(?Pd+)/        5. 删除指定的直播间数据(根据id):DELETE /lives/(?Pd+)/

模型类定义

# models.pyclass LiveInfo(models.Model):    live_id = models.IntegerField(verbose_name='直播间号')    live_streamer = models.CharField(max_length=20, verbose_name='主播名字')    live_title = models.CharField(max_length=30, verbose_name='直播间标题')    live_pop = models.IntegerField(default=0, verbose_name='人气')    live_content = models.CharField(default='未设定', max_length=20, verbose_name='直播类型')    is_delete = models.BooleanField(default=False, verbose_name='删除标记')    class Meta:        db_table = 'tb_lives'        verbose_name = '直播间'        verbose_name_plural = verbose_name    def __str__(self):        return self.live_streamer

views.py文件中定义视图实现API接口:

class LiveListView(View):    def get(self, request):        """获取所有直播间"""        lives = LiveInfo.objects.all()        lives_list = []        for live in lives:            lives_list.append({                'live_id': live.live_id,                'live_streamer': live.live_streamer,                'live_title': live.live_title,                'live_pop': live.live_pop,                'live_content': live.live_content            })        return JsonResponse(lives_list, safe=False)    def post(self, request):        """新增直播间"""        passclass LiveDetailView(View):    def get(self, request, pk):        """查询一间直播间信息"""        pass    def put(self, request, pk):        """修改直播间信息"""        pass    def delete(self, request, pk):        """删除直播间"""        pass

RestAPI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值