一、什么是REST

面向资源是REST最明显的特征,资源是一种看待服务器的方式,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。

与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词。一个资源可以由一个或多个URI来标识。URI既是资源的名称,也是资源在Web上的地址。对某个资源感兴趣的客户端应用,可以通过资源的URI与其进行交互。对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。

REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。(7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS)

二、什么是RESTful

API符合REST架构设计的API。

概念不多说了,具体通过下面的一个简单例子看看Django框架是怎么实现RESTful。

三、rest_framework模块

1.使用pip命令下载:pip3 install djangorestframework

2.新建一个Django项目

3.创建一个apitest APP

cd d:\Tool # 切换到Tool目录

python manage.py startapp apitest #创建apitest应用

目录结构:

4.打开settings.py,增加一段配置:

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'apitest', #添加apitest app

'rest_framework', #添加rest_framework

]

#增加一段REST_FRAMEWORK配置

REST_FRAMEWORK = {

# Use Django's standard `django.contrib.auth` permissions,

# or allow read-only access for unauthenticated users.

'DEFAULT_PERMISSION_CLASSES': [

'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'

],

'DEFAULT_RENDERER_CLASSES': (

'rest_framework.renderers.JSONRenderer',

),

'DEFAULT_PARSER_CLASSES': (

'rest_framework.parsers.JSONParser',

)

}

5.在apitest目录下新建一个api.py,让我们来写一些测试代码:

#coding=utf-8

from rest_framework import permissions

from rest_framework.response import Response

from rest_framework.decorators import api_view, permission_classes

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt

@api_view(http_method_names=['post']) #只允许post

@permission_classes((permissions.AllowAny,))

def inventory(request):

parameter = request.data

id = parameter['data']

if id == 1:

data = 'There are three dogs'

elif id == 2:

data = 'There are two dogs'

else:

data = 'nothing'

return Response({'data':data})

6.在urls.py添加刚刚创建的api路由:

urlpatterns = [

path('admin/', admin.site.urls),

path('food/', api.inventory), #添加api中inventory路由

]

上面配置好了之后本地调试下,输入命令:python manage.py runserver 8000

好了,服务器端代码已经写完。我们可以通过约定好的名词food来获取或者更改资源。然后写个小脚本测试下上面的接口:

import requests

url= 'http://127.0.0.1:8000/food/'

data = {'data':2}

h=requests.post(url,json=data)

print(h.text)

输出:

测试OK

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 详解Django rest_framework实现RESTful API

本文地址: http://www.cppcns.com/jiaoben/python/228790.html

python django restful_详解Django rest_framework实现RESTful API相关推荐

  1. Django 2.0 学习(20):Django 中间件详解

    Django 中间件详解 Django中间件 在Django中,中间件(middleware)其实就是一个类,在请求到来和结束后,Django会根据自己的规则在合适的时机执行中间件中相应的方法. 1. ...

  2. Django URLS 详解

    Django URLS 详解 一.Path() 参数详解 path(route, view, kwargs=None, name=None) path中有4个参数,其中两个参数为必填,两个参数为非必填 ...

  3. Python开发技术详解PDF

    Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...

  4. eclipse配置python开发环境_Eclipse中配置python开发环境详解

    Eclipse中配置python开发环境详解 1.下载python安装包.python-2.6.6.msi.并安装. 默认python会安装在C:\Python26下,查看环境变量,如果没有在path ...

  5. Python开发技术详解

    Python开发技术详解 下载地址 https://pan.baidu.com/s/1KTrk3B1sajMiPIoo3-Rhuw 扫码下面二维码关注公众号回复 100089获取分享码 本书目录结构如 ...

  6. python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...

    Python开发技术详解适合Python爱好者.大中专院校的学生.社会培训班的学生以及用Python语言进行系统管理.GUI开发.Web开发.数据库编程.网络编程的人员使用. 内容提要 Python是 ...

  7. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  8. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  9. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

最新文章

  1. 竞赛专题(四)特征工程-竞赛中的必杀技
  2. linux yum 本地源配置
  3. QT中封装的IP地址的widget
  4. 什么是现代通用计算机的轴型,大学计算机基础(版)各章节习题+答案.doc
  5. 【Transformer】ATS: Adaptive Token Sampling For Efficient Vision Transformers
  6. 终端命令运行php文件路径,PHP -S命令 PHP内置web服务器
  7. JSON与csv哪一个更自描述_NBA历届选秀状元,你更喜欢哪一个/哪一个最成功
  8. python Django音乐推荐系统(课设、毕设、学习)
  9. 研发/项目计划管理表格
  10. oppo刷机工具_黔隆科技刷机教程OPPOA1忘记密码免刷机保资料解屏幕锁教程
  11. 代理模式(委托模式)— 结构型
  12. 剑指offer20题——leetcode主站65题
  13. Linux Base VIII 压缩和解压缩命令
  14. Zbrush笔刷讲解
  15. 人工智能入门相关书籍
  16. JVM内存模型和垃圾回收机制
  17. 从ACL 2022 Onsite经历看NLP热点
  18. ZYNQ之FPGA 片内ROM读写测试实验
  19. 载波通信在电网智能化中的应用
  20. Android直播的集成

热门文章

  1. 数据分析系列:绘制散点图(matplotlib)
  2. 解决JavaWeb项目代码报错
  3. coding note-源码搜索
  4. 分布式定时任务调度系统技术选型--转
  5. JWT Authentication Tutorial: An example using Spring Boot--转
  6. spring源码分析之定时任务Scheduled注解
  7. Linux下C语言的调试--转
  8. android studio 与gradle的版本对应
  9. RocketMQ控制台安装教程
  10. 百度陆奇最新内部演讲:人工智能时代,给工程师的5个建议