Python自动化开发学习-RESTful API

RESTful API

RESTful API 是一种面向资源编程,也叫表征状态转移(英文:Representational State Transfer,简称REST)。
认为网络上所有的东西都是资源,对资源的操作无非就是增删改查。

传统的方法

比如有个资产的页面,URL是 www.example.com/asset。要对它进行增删改查,可能使用不同的url来区分:

  • www.example.com/addAsset :增加资产,一般是POST方法。
  • www.example.com/delAsset :删除资产,一般是POST方法。
  • www.example.com/editAsset :修改资产,一般是POST方法。
  • www.example.com/showAsset :显示资产,一般是GET方法。也可能使用 www.example.com/asset 作为url

这里的url一般使用的都是动词,表示是一个动作。

RESTful API 的规则

RESTful API 用一个url代指一个资源,既然是资源,这个词要用名词。那么这个url就是 www.example.com/asset 。增删改查都是通过这个url实现的,通过不同的method实现不同的方法,常用的是下面几个方法:

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
  • DELETE(DELETE):从服务器删除资源。

在django中,推荐使用CBV。当然FBV也不是不行。

RESTful API 设计指南

这篇貌似讲的很好,值得参考:http://www.ruanyifeng.com/blog/2014/05/restful_api.html

JsonResponse

使用API就会有很多序列化数据返回的操作。
之前当我们需要给前端返回序列化后的字符串时,往往都是先调用json.dumps()这个方法,然后再用HttpResponse()把字符串返回给前端。既然每次都要这么搞,于是django给我么封装了一个新方法,直接完成序列化和返回字符串。
JsonResponse这个类是HttpRespon的子类,通过它直接就可以把字典进行序列化并返回给前端。

>>> from django.http import JsonResponse
>>> response = JsonResponse({‘foo‘: ‘bar‘})
>>> response.content
‘{"foo": "bar"}‘

默认只能传入一个字典,并且API要返回的数据应该也就是字典。但是如果一定要序列化一个其他的类型,比如列表,可以设置safe参数:

>>> response = JsonResponse([1, 2, 3], safe=False)

如果要自定义编码器,和json方法一样,通过下面的参数指定:

>>> response = JsonResponse(data, encoder=MyJSONEncoder)

原文地址:http://blog.51cto.com/steed/2149546

时间: 2024-10-13 09:51:37

Python自动化开发学习-RESTful API的相关文章

Python自动化开发学习12-MariaDB

关系型数据库 主流的关系型数据库大概有下面这些: Oracle : 甲骨文公司的企业级的数据库 SQL Server : 微软的 MySQL : 免费的数据库,现在也属于Oracle的旗下产品 MariaDB : 开源的数据库,MySQL的一个分支 PostgreSQL : 也是开源的 SQLite : 一款轻量级的数据库 DB2 : IBM的 RDBMS 术语 RDBMS(Relational Database Management System)即关系数据库管理系统,在开始之前,先了解下RD

python自动化开发学习-9 socket网络编程

一. 简介 python提供了两个级别访问的网络服务: 低级别的网络服务支持节本的socket,它提供了标准的BSD sockets API,可以访问底层操作系统socket接口的全部方法. 高级别的网络服务模块socketserver,它提供了服务器中心类,可以简化网络服务器的开发. socket介绍 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix

Python自动化开发学习19-Django

接下来,我们把Django分为视图(View).路由系统(URL).ORM(Model).模板(Templates )这4块进行学习. 视图 提交数据 上节课已经用过 request.POST.get() 获取提交的数据了,现在来看看有多选框的情况,多选的话应该要提交多个数据.先写一个有单选.多选.下拉列表的html: <body> <form action="/choice/" method="post"> <p> 性别: &l

Python自动化开发学习-Tornado

Tornado 基本操作 讲师的博客:白话tornado源码系列5篇,主要是源码剖析暂时不需要知道那么多.只要看下第一篇就好:https://www.cnblogs.com/wupeiqi/tag/Tornado/Web框架之Tornado:https://www.cnblogs.com/wupeiqi/p/5702910.html Hello World 经典的 hello world 示例: import tornado.web # 视图 class MainHandler(tornado.

Python自动化开发学习4-3

JSON 和 pickle 序列化:把数据对象变成字符串的形式,这样可以保存在文件中.反之就是反序列化 python自带的str()可以完成序列化,然后eval()可以反序列化,但是我们先把他们忘记.不知道适用范围是多大. 我们用json的规范来做序列化和反序列化. import json dica = {'name':'Alice',         'age':18,         'from':'ShangHai'         } stra = json.dumps(dica)  #

Python自动化开发学习5

模块 在模块中,我们可以定义变量.函数,还有类(这个还没学到).总之应该就是所有的代码.先建一个文件,取名为module,py,内容如下: # 一下是module.py的内容 string = "This is module,py" def say_hi():     print("Hi") def test():     return "test in module.py" 在上面的模块中我们定义了1个变量和2个函数,现在我们要在另外一个文件中

Python自动化开发学习的第十周----RabbitMQ

RabbitMQ   消息队列   消息的传递 安装   http://www.rabbitmq.com/install-standalone-mac.html 如果是在windows上安装还要安装erlang语言 安装python RabbitMQ pip install pika or easy_install pika or 源码 https://pypi.python.org/pypi/pika 实现最简单的队列通信 http://www.rabbitmq.com/getstarted.

Python自动化开发学习14

Web的三个层次 网页设计思路是把网页分成三个层次,即:结构层(HTML).表示层(CSS).行为层(Javascript).形象的比喻,先是HTML捏了一个人,然后CSS则是给人穿上衣服,最后通过JS让人动起来. Web服务的本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端.用户向服务器发送一个请求.然后服务器响应,将数据和格式发回给客户端,然后断开这个连接.客户端收到返回的数据后,通过浏览器将数据按照一定的格式呈现出来.整个过程就是

Python自动化开发学习15-JavaScript和DOM

初识JavaScript JavaScript(后面都简写为js)是一门独立的语言.浏览器本身就具有js解释器. js的存在形式 和css类似,js代码要放在<script>标签中.同样和css类似,还可以写在一个js文件中,比如文件名就叫 commons.js ,然后在head中引入 <script src="commons.js"></script> ,src的值就是js的文件路径.<script type="text/javas