第十二章:Restful风格介绍

第十二章:Restful风格介绍,第1张

  系列文章目录

第一章 :Django安装与配置虚拟环境

第二章:django各模块的作用以及参数说明

第三章:  Django的路由与视图

第四章:django请求

第五章:django会话

第六章:django中的cookie与session

第七章:视图类

第八章:模型类

第九章:django与mysql连接与迁移

第十章:django模型类(二)

第十一章:django之后台管理

文章目录

系列文章目录

文章目录

前言

一、web应用模式的介绍

1.前后端分离

介绍

工作流程图

2.前后端不分离(流行):

介绍

工作流程图

二.接口Api

1.自己定义一套接口

api文档

后端实现

总结



前言

        在web应用领域开发大多数都会使用Restful风格,可能有人要问,问什么要使用Restful,我自己想怎么写,怎么写,接口规范按我的来。那你有没有想过,有一天这个项目是一个团队在做,并且前后端时进行分离的呢,你写的这些东西别人能看懂吗?Restful就是为了解决这一问题所提出的。

        通过这篇文章了解一下前后端分离的设计理念以及使用django视图类来实现简单的Restful风格。

一、web应用模式的介绍 1.前后端分离 介绍

一批人做前端,一批人做后端,共同讨论一套开发文档(接口,数据类型,等等)前后端根据开发文档完成自己该完成的内容

前端:只负责前端页面的编写,通过接口像后端请求数据,把数据渲染到前端(浏览器或app)页面上

后端:实现开发文档中定义的接口,通过接口(请求参数,请求类型)返回后端处理过后的数据,不再负责前端页面的渲染,只负责数据的处理

特点:成本高,适合于大型web项目,分工明确

工作流程图

2.前后端不分离(流行): 介绍

前端后端是一伙人在写,后端处理完数据之后直接使用数据进行前端页面的渲染,在django中使用render()进行模板的渲染返回,方便了数据传递,接口调用的过程,成本降低,适合小型项目使用。

工作流程图

二.接口Api

一种特殊的路由,该路由是由前后端一起商议出来一套开发文档,里面包含接口参数,调用方式,由前端调用接口,后端给前端返回数据。

1.自己定义一套接口 api文档

 

后端实现
class BookInfo_getOne(View):
    def get(self, req, id):
        try:
            book = BookInfo.objects.get(id=id)
        except Exception as e:
            return JsonResponse({'message': '未查询到此书籍'}, status=404)
        book_dict = {
            'id': book.id,
            'name': book.name,
            'chuban_date': book.chuban_date,
            'read_count': book.read_count,
            'pinglun_count': book.pinglun_count,
            'is_del': book.pinglun_count,
        }
        return JsonResponse(book_dict, status=201)

    def put(self, req, id):
        try:
            book = BookInfo.objects.get(id=id)
        except Exception as e:
            return JsonResponse({'message': '未查询到此书籍'}, status=404)
        book_str = req.body.decode()
        book_json = json.loads(book_str)
        book.name = book_json['name']
        book.chuban_date = book_json['chuban_date']
        book.read_count = book_json['read_count']
        book.pinglun_count = book_json['pinglun_count']
        book.is_del = book_json['is_del']
        book.save()
        return JsonResponse(book_json, status=202)

    def delete(self, req, id):
        try:
            book = BookInfo.objects.get(id=id)
            book.delete()
        except ProtectedError as d:
            return JsonResponse({'message': '此书籍受关联外键保护'}, status=302)
        except Exception as e:
            return JsonResponse({'message': '未查询到此书籍'}, status=404)
        return JsonResponse({'message': '删除成功'}, status=203)

使用不同的方法调用同一个接口实现不同的功能,后端只管返回处理数据的结果,而不返回渲染后的前端界面


总结

使用不同的方法调用同一个接口实现不同的功能,后端只管返回处理数据的结果,而不返回渲染后的前端界面

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/917616.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存