Web应用模式

在开发Web应用中,有两种应用模式:前后端不分离和前后端分离

前后端不分离

前后端不分离通俗来讲就是不区分前端和后端,浏览器请求时服务器直接返回页面,其示意图如下

### 前后端分离
前后端分离是Web不断发展的结果,它将开发工作分为两块,前端和后端,前端负责静态页面的构建和数据展示,而数据则来自于后端,后端的工作在于对外提供统一的API接口,供前端调用获取数据,其示意图如下

## API接口
为了在团队内部形成共识,防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。

目前市面上大部分公司开发人员使用的接口服务架构主要有两种:Restful和RPC

RPC

RPC(Remote Procedure Call)翻译成中文就是远程过程调用

action=get_all_student&params=301&sex=1

上面是一个典型的RPC调用,action指定要调用的函数名,&后面可以传入参数

RPC的缺点是如果函数数量较多,前端在请求api接口时会比较难找,且容易出现重复的接口

### RESTful接口
REST全称是Representational State Transfer,中文名为表述性状态转移,简单来讲,就是把后端所有的数据/文件看成资源,接口请求数据,本质上就是对资源进行操作。Web项目中操作资源,无非就是增删改查,所以要求在地址栏中声明要操作的资源是什么,然后通过`http请求动词`来说明对资源进行哪一种操作

以下是几个示例:

GET http://www.douban.com/api/books/ 获取所有书籍

POST http://www.douban.com/api/books/ 添加一本书

DELETE http://www.douban.com/api/books/2/ 删除id=2的书

PUT http://www.douban.com/api/books/2/ 更新id=2的书籍信息

## RESTful API规范
RESTful 理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源。而对于数据资源分别使用POST、DELETE、GET、UPDATE等请求动作来表达对数据的增删查改。
详细的规范参考博客:[RESTful 规范](https://www.cnblogs.com/zzliu/p/10854097.html)


## 序列化
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把**数据转换格式**,序列化可以分两个阶段:

序列化: 把我们识别的数据转换成指定的格式提供给别人。

反序列化:把别人提供的数据转换/还原成我们需要的格式。

例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。

Rest_Framework简介的更多相关文章

  1. rest_framework 学习笔记(一)

    rest_framework [TOC] 简介 Django REST框架是一个功能强大且灵活的工具包,用于构建Web API. 官方网站:https://www.django-rest-framew ...

  2. Django rest_framework 实用技巧

    前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...

  3. Rest_framework 和路由配置(一)

    简介 Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用. Rest_framework 核心思想: 缩减代码. ...

  4. rest_framework基础

    简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用  ...

  5. rest_framework之渲染器

    渲染器简介 什么是渲染器 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 渲染器的作用 序列化.友好的展示数据 渲染器配置 首先要在settins.py中将rest_framew ...

  6. rest_framework之版本控制

    简介 API版本控制可以用来在不同的客户端使用不同的行为.REST框架提供了大量不同的版本设计. 版本控制是由传入的客户端请求决定的,并且可能基于请求URL,或者基于请求头. 有许多有效的方法达到版本 ...

  7. python3-开发进阶Django中序列化以及rest_framework的序列化

    一.django框架的序列化 直接上代码 1.这是app下的models.py from django.db import models # Create your models here. clas ...

  8. Django Rest Framework 简介及 初步使用

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  9. DRF项目之JWT认证方式的简介及使用

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

随机推荐

  1. 【OpenJ_Bailian - 2790】迷宫(bfs)

    -->迷宫  Descriptions: 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不 ...

  2. mysql命令行备份方法

    一.mysql备份 1.备份命令 格式:mysqldump -h主机IP -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql # 本地备份可以不添加端口和主机IP ...

  3. 【AMAD】splinter -- 用于测试web app的python框架

    简介 动机 作用 用法 热度分析 个人评分 简介 Splinter1是一个开源工具,使用Python编写,用于测试web apps.它可以用来对浏览器实现自动化操作,比如访问URLs,和按钮等交互. ...

  4. webdriervAPI(常用的js方法)

    from  selenium  import  webdriver driver  =  webdriver.Chorme() driver.get("http://www.baidu.co ...

  5. pikachu-SQL注入

    参考网址: http://www.mamicode.com/info-detail-2795438.html

  6. 合并两个排序的链表递归和非递归C++实现

    题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,要求合成后的链表满足单调不减规则. 1.分析 已知输入的两个链表递增有序,要使输出的链表依然递增有序,可以依次从输入的两个链表中挑选最小的 ...

  7. Construct String from Binary Tree

    You need to construct a string consists of parenthesis and integers from a binary tree with the preo ...

  8. H.Holy Grail ( floyd )(The Preliminary Contest for ICPC Asia Nanjing 2019)

    题意: 给出一个有向图,再给出6条原来不存在的路径,让你在这6条路径上添加一个最小的数,使图不存在负环. 思路: 直接6遍 floyd 输出就行了. #include <bits/stdc++. ...

  9. PHP 时间转几分几秒

    public static function timetodate($c){ if($c < 86400){ $time = explode(' ',gmstrftime('%H %M %S', ...

  10. ORM中的锁和事务

    锁 sql语句加锁 select * from book where id=1 for update; begin; start transaction; select * from t1 where ...