一. 什么是RESTful

  • REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”
  • REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态
  • 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性
  • 对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)

二.简单示例

Django REST Framework框架是一个功能强大且灵活的工具包,用于构建Web API。让我们看一个使用REST框架构建一个简单的模型支持的API的快速示例。
我们将创建一个读写API,用于访问项目用户的信息。

①Installation/安装

pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support

...or clone the project from github.

git clone https://github.com/encode/django-rest-framework

Add 'rest_framework' to your INSTALLED_APPS setting.

INSTALLED_APPS = (
...
'rest_framework',
)

如果您打算使用可浏览的API,您可能还需要添加REST框架的登录和注销视图。 将以下内容添加到根urls.py文件中。

urlpatterns = [
...
url(r'^api-auth/', include('rest_framework.urls'))
]

②REST框架API的任何全局设置都保存在名为REST_FRAMEWORK的单个配置字典中。 首先将以下内容添加到settings.py模块:

INSTALLED_APPS = (
... # Make sure to include the default installed apps here.
'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'
]
}

Don't forget to make sure you've also added rest_framework to your INSTALLED_APPS.
We're ready to create our API now. Here's our project's root urls.py module:

from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets # Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'is_staff') # ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer # Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet) # Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

ps:与后台进行交互

def api_test(request):
data = json.loads(request.POST.get('data'))
print(data) serializer_obj = rest_serializer.UserSerializer(data=data)
if serializer_obj.is_valid():
serializer_obj.save()
serializer_obj return render(request,"crm/api-test.html",locals())

Views.py

Here you go!  

You can now open the API in your browser at http://127.0.0.1:8000/, and view your new 'users' API. If you use the login control in the top right corner you'll also be able to add, create and delete users from the system.

最新文章

  1. 关于Simple_html_dom的小应用
  2. Tab切换
  3. Sparse Filtering 学习笔记(一)网络结构与特征矩阵
  4. Enlisting multiple 1-phase aware participants in the same transaction
  5. Types of compression algorithms
  6. ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)
  7. python小问题记录:
  8. Hbase 学习笔记(一) Hbase的物理模型 Hbase为每个值维护了一个多级索引,即<key, column family, column name, timestamp>
  9. LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】
  10. bootstrap基础样式使用
  11. 数据层使用DBHelper.dll来减少工作量
  12. Python实现使用tkinter弹出输入框输入数字, 具有确定输入和清除功能
  13. 安装myeclipse后,打开时弹出:“该站点安全证书的吊销证书不可用”,怎样解决?
  14. 链表加bfs求补图联通块
  15. 在c:forEach与s:iterator里面使用if标签判断当前位置是否为2的倍数
  16. 关于i++和i++的左值、右值问题
  17. Python 缓存服务
  18. 转载:明明白白VC LIB和DLL的使用
  19. 【python】自学笔记
  20. radio属性添加

热门文章

  1. webpack快速入门——CSS进阶:SASS文件的打包和分离
  2. 【mongodb】——常用命令大全
  3. ubuntu 16.04 docker下安装klee环境
  4. 【NOIP2013】 华容道 bfs预处理+bfs
  5. jmeter -- 在beanshell中拿到请求body参数和header参数
  6. android权限permission大全(权限提醒)
  7. 搜索类网站记录 && 代理服务器
  8. tensorflow基础篇-2
  9. vue-cli 中的 webpack 配置详解
  10. predefClass中包含的符号