什么是接口?

接口可以理解为url就是接口.

那么在其他语言里面接口也可以是约束类

restful规范是什么?

RESTful是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

URL:

1.url体现版本

2.url体现是API

3.用HTTPS

4.条件

5.面向资源编程

6.根据method的不用进行不同的操作

7.响应时添加状态码

常见的状态码

200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

状态码

Response('...',status=200)

8.不同的操作给不同的返回值

GET:返回全部的数据

POST:返回新的数据(规范是返回新的数据,但是我们要根据业务逻辑看新的数据是否有价值,)

GET:获取单挑数据

PUT:返回修改的数据

PATCH:返回修改的数据

DELETE:返回空

9.返回错误信息

10.详细信息.

你理解的restful规范?

restful是一个规范,规定API如何编写,通过它我们可以让api更加简洁可维护

比如,最直观的根据method的不同进行不同的操作,原来这些都是url设置的

除此之外:

  -api标识

  -版本

  -面向资源编程

  -状态码

  -返回值

  -错误信息

  -hypemedia link

RestFrameWork框架是什么?

帮助我们快速的开发符合restful规范的接口

有什么功能:

1.路由

2.视图

3.版本

4.认证

5.权限

6.频率

7.解析器

8.序列化

9.分页

10.渲染器

谈谈你对 django restframework的认识:

  -路由

    -可以通过as_view传参数,根据请求方式的不同执行响应的方法

    -可以在url中设置一个结尾类似于.json

  -视图

    -帮助开发者提供了一些类,并在类提供了很多的方法供我们使用

  -版本

    -在url中设置version参数,用户请求传入参数时,在request.version中获取版本,根据版本的不同做不同的处理

  -认证

    - 写一个类并注册到认证类,在类的authticate方法中编写认证逻辑

      -认证成功(user,auth)

      -rase AuthticateFaild(..)

      -None 继续

  - 权限

    -写一个类并注册的权限类,在类的has_permission方法中写权限逻辑

    -True  

    -False

  -频率限制

    -写一个类并注册的权限类,在类的allow_requset/wait 方法中写权限逻辑

    -匿名

    -用户

    返回True  或者False  如果返回False 那么要执行wait

  -解析器:

    -根据ContentType请求头,选择不同的解析器对请求体中的数据进行解析.

    Content-Type : url-formedo

    Content-Type :application/json

  -分页

    -对从数据库中取到的数据进行分页处理. SQL---> limit offset

      -根据页码:http://www.luffycity.com/api/v1/student/?page=1&size=10

      -根据索引:http://www.luffycity.com/api/v1/student/?offset=60(游标位置)&limit=10

      -根据加密:

  -序列化

    对queryset序列化以及对请求数据格式校验

  -渲染器

    -根据url中传入的后缀,决定在数据如何渲染到页面上.

视图都继承了哪些类?

认证是怎么实现的?

在用户登录的时候进行判断是否登录过来决定是更新还是创建token

(update_or__create)下次访问的时候要带着token进行访问.

如果认证失败则抛出异常,认证成功需要返回一个元组

(request.user,request.auth)

为什么要更新token?

如果你的token一直是同一个值的话,那么如果别人获取了你的token值,就可以

伪造你进行一些不是你个人意愿的操作

你的认证是只给一个视图还是全局的?

这个认证是可单视图也可以是全局的,

因为在源码里边,他先会去你编写的类authentication_classes里面取你设置的认证

如果没有就去settings里面找.在settings设置了就可以进行全局认证

如何实现访问频率的限制?

主要分为匿名用户和非匿名用户两种类型,

先讲讲匿名用户

假设我们一分钟限制最多访问10次

当请求进来的时候,以IP为key,值是一个列表,列表里套着时间戳,最新的时间放在最左边

1.如果用户在20秒内访问了10次,那么列表里就有10个时间戳,当他再次访问的时候

拿访问的时间-60秒跟10次最旧的时间相比,如果比它小,那么不能进行访问.

2.如果访问的时间大于10个,那么把列表的10个清空放置最新的时间

用户的话就可以用用户名为key来实现.

本质上这种方式只能够防小白,稍微有经验的都会用代理IP然后随机获取进行访问

或者随机用不同的用户进行爬取信息

面试回答规范

频率的限制分两种:

一种是匿名用户

当匿名用户访问的时候,把它的IP为key,value值对应一个列表里面装访问的时间戳,

下一次匿名用户访问的时候,对比列表的时间戳的时间戳,把不符合的剔除跳.超时的.

然后再对比他的个数

如果是用户的话那么把用户名作为key

这是看自己源码学习的,但是我想啊

对于匿名用户来说,如果他有很多代理的IP随机访问,那么我们就捕捉不到他,不能给他做

频率的限制.

默认将访问记录放在了缓存中: redis/mecached

restful规范和restframework框架的更多相关文章

  1. Django框架(十八)—— CBV源码分析、restful规范、restframework框架

    目录 CBV源码分析.restful规范.restframework框架 一.CBV源码分析 1.url层的使用CBV 2.as_view方法 3.view方法 4.dispatch方法(可以在视图层 ...

  2. Django框架(十七)-- CBV源码分析、restful规范、restframework框架

    一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view) 2.as_view方法 as_view是 ...

  3. restful规范与rest_framework

    django两种开发模式: 一.前后端不分离项目 二.前后端分离项目 什么是restful规范? 在前后端不分离的项目中,网页所需要的数据可以直接通过模板渲染的方式传递到前端页面,并且可以很好的支持d ...

  4. Restframework框架总结及restful规范

    1. django rest framework框架的作用? 帮助开发者可以快速开发出遵循restful规范的API 2. django rest framework框架都有哪些组件(10)? -版本 ...

  5. 一、restful规范 二、CBV(View)源代码执行流程 三、drf框架安装和简单使用

    一.restful规范 ''' 它是一个规范,面向资源架构 十条规范 1.API与用户的通讯协议,总是使用HTTPs协议,确保了网络传输的安全性 2.域名 --https://api.example. ...

  6. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

  7. 测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架

    一.思考❓❔ 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Dj ...

  8. 基于Django的Rest Framework框架的RESTful规范研究

    一.什么是RESTful规范 总的来说:RESTful规范就是一个非技术,人为约定的一个面向资源的架构理念. REST与技术无关,代表的是一种软件架构风格,REST是Representational ...

  9. DjangoRestFramework 学习之restful规范 APIview 解析器组件 Postman等

    DjangoRestFramework学习一之restful规范.APIview.解析器组件.Postman等 本节目录 一 预备知识 二 restful规范 三 DRF的APIView和解析器组件 ...

随机推荐

  1. Nginx常用Rewrite(伪静态规则)WordPress/PHPCMS/ECSHOP/ShopEX/SaBlog/Discuz/DiscuzX/PHPWind/Typecho/DEDECMS

    目前已收集Wordpress.Wordpress二级目录.PHPCMS.ECSHOP.ShopEX.SaBlog.Discuz.Discuz X.PHPWind.Typecho.DEDECMS: Wo ...

  2. 向git库提交代码出现”There are no staged files"怎么办?

    1.选择菜单“Window”->"Preference" 2.左边树菜单选择“Team”->"Git"->"Committing&q ...

  3. Angular 学习笔记——自定义指令

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  4. 互联网我来了 -- 2. js中&quot;异步/堵塞&quot;等概念的简析

    一.什么是"异步非堵塞式"? 这个名字听起来非常恶心难懂,但假设以 买内裤 这件事情来比喻运行程序的话就非常easy理解"异步非堵塞式"的涵义了. 比如你是一个 ...

  5. c# 获取毫秒值,时间戳

    获取时间戳(秒) (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 获取时间戳(毫秒) (DateTime. ...

  6. 如何突破PHP程序员的技术瓶颈分析

    来自:http://www.jb51.net/article/27740.htm 身边有几个做PHP开发的朋友,也接触到不少的PHP工程师,他们常疑虑自己将来在技术上的成长与发展,我常给他们一些建议, ...

  7. Junit使用教程(三)

    四.实例总结 1. 参数化测试 有时一个测试方法,不同的参数值会产生不同的结果,那么我们为了测试全面,会把多个参数值都写出来并一一断言测试,这样有时难免费时费力,这是我们便可以采用参数化测试来解决这个 ...

  8. 基于java spring框架开发部标1078视频监控平台精华文章索引

    部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面 ...

  9. web开发中比较常用的html标签

    作为一名web开发人员,总结了一下经常用到的html标签,如下:<html> <head> <!--meta头标签 表示页面三秒后跳转到新浪页面--> <me ...

  10. C++11并发学习之三:线程同步(转载)

    C++11并发学习之三:线程同步 1.<mutex> 头文件介绍 Mutex又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mutex> 头文 ...