1.1 RestfulAPI与HTTP简介

  1、什么是RestfulAPI

      1、REST直接翻译:表现层状态转移,实质就是一种面向资源编程的方法
      2、REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口)
      3、RestfulAPI中认为网络上所有的东西都是一种资源,对这些资源操作时无非就是增删改查
      4、网络上的资源一般都用一段url代替,比如:http://www.chnsys.com/asset 代替资产资源
      5、根据发送请求的method方法判断如何操作这些资源
        GET(SELECT):             从服务器取出资源(一项或多项)。
        POST(CREATE):           在服务器新建一个资源。
        PUT(UPDATE):             在服务器更新资源(客户端提供改变后的完整资源)。
        DELETE(DELETE):       从服务器删除资源。
        PATCH(UPDATE):         在服务器更新资源(客户端提供改变的属性)。

   2、HTTP的第一行包含三个信息:谓词、URL、HTTP协议版本。三个数据使用空格隔开

        POST http://comet.chouti.com/comet/connect HTTP/1.1

    1、谓词(POST)

        1. WEB API就是使用谓词作为默认的路由方式,最常用的谓词有:POST\DELETE\PUT\GET,这四个谓词对应了“增、删、改、查”四个动作
        2. 其中,GET,DELETE不包含BODY,PUT,POST可以包含BODY

    2、URl

        1. 网络上的资源一般都用一段url代替,比如:http://www.chnsys.com/asset 代替资产资源

    3、HTTP协议版本

        1. HTTP的第一行内容就是这些: POST http://comet.chouti.com/comet/connect HTTP/1.1
        2. 接下来会有一个\r\n来进行换行,接下来就是HTTP HEAD部分,HTTP HEAD描述了HTTP请求和响应。
        3. HTTP HEAD即为HTTP协议中最重要的部分,他包含了编码、BODY长度、内容协商等信息,你也可以包含一些自定义信息

  3、RestFul API中常用的HEAD信息   

      1. User-Agent:用户代理,是什么客户端发出的请求,如IE、Chrome、Fiddler等
      2. HOST:域名
      3. Authorization:验证信息
      4. Accept:接受何种序列化方式返回的数据,用MIME表示,用于对响应数据的内容协商,
          可以包含多个MIME,按优先顺序排列,如application/json,application/xml,text/html
      5. Content-Type:使用一个MIME表示,表示所发送请求的Body的序列化方式,常见的如application/json,
          还有WEB交互最常使用的application/x-www-form-urlencoded,都表示了你的body部分的序列化方式,在请求、响应中都会出现
      6. HTTP HEAD部分是HTTP协议中最核心的部分,可配置向非常多这里就不列举了
      7. 响应部分也分为头部和Body,响应头部和请求头部最大的不同在于响应首行存在一个HTTP Code
          HTTP Code作为API的调用状态的展示,也很重要,在REST API中最常用的状态码一般为2XX,4XX,5XX三个段
      8. 在首部之后有一个空行(\r\n)接下来就是Content,这里有具体的业务数据,根据不同的Content-Type使用不同的序列化方式表示,例如JSON,XML,甚至HTML

  4、用一张图为大家展示一下这些知识 

1.2 RestfulAPI使用举例

   1、创建django项目testRestfulAPI

from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^asset/', views.AssetView.as_view()),
]

urls.py

from django.shortcuts import HttpResponse
from django.views import View
import json class AssetView(View):
def get(self,request): # 返回查询信息
print('response_select',request.META.get('HTTP_HOSTNAME')) # c1.com
return HttpResponse(json.dumps({'status':'ok','method':'select'})) def post(self,request): # 创建
print('response_create',request.body) # {"hostname": "c1.com"}
return HttpResponse(json.dumps({'status':'ok','method':'create'})) def put(self,request): # 更新
print('response_update',request.body) # {"hostname": "c1.com"}
return HttpResponse(json.dumps({'status':'ok','method':'update'})) def delete(self,request): # 删除
print('response_delete',request.body) # {"hostname": "c1.com"}
return HttpResponse(json.dumps({'status':'ok','method':'delete'}))

views.py

  2、创建文件test.py使用requests模块模拟增删改查(注释服务器端csrf)

import requests

# 1、查询
response_select = requests.get('http://127.0.0.1:8000/asset/',
headers={'hostname':'c1.com'},
)
print('response_select',response_select.json()) # {'method': 'select', 'status': 'ok'} # 2、创建
response_create = requests.post('http://127.0.0.1:8000/asset/',
headers='',
json={'hostname':'c1.com'}
)
print('response_create',response_create.json()) # {'status': 'ok', 'method': 'create'} # 3、更新
response_put = requests.put('http://127.0.0.1:8000/asset/',
headers='',
json={'hostname':'c1.com'}
)
print('response_update',response_put.json()) # {'method': 'update', 'status': 'ok'} # 4、删除
response_delete = requests.delete('http://127.0.0.1:8000/asset/',
headers='',
json={'hostname':'c1.com'}
)
print('response_delete',response_delete.json()) # {'status': 'ok', 'method': 'delete'}

test.py

01: RestfulAPI与HTTP的更多相关文章

  1. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  2. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  3. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. 0042 MySQL学习笔记-入门--01

    基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...

  6. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  7. ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1

    最近在myeclipse上创建maven类型的web项目的时候,出现了一个错误. ArtifactTransferException: Failure to transfer org.apache.o ...

  8. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  9. 异步编程系列第01章 Async异步编程简介

    p { display: block; margin: 3px 0 0 0; } --> 2016.10.11补充 三个月过去了,回头来看,我不得不承认这是一系列失败的翻译.过段时间,我将重新翻 ...

随机推荐

  1. 使用sift特征点进行knn最近邻匹配

    #include <opencv2/xfeatures2d/nonfree.hpp> #include <opencv2/features2d/features2d.hpp> ...

  2. SQL Fundamentals || Single-Row Functions || 转换函数 Conversion function

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  3. Spring MVC静态资源处理:<mvc:resources />

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  4. 【make install】自定义安装目录,添加动态链接库 【--prefix】 【ldconfig】 【LD_LIBRARY_PATH】

    怎么卸载make install安装的软件? https://www.zhihu.com/question/20092756 怎么指定安装目录以及对应的添加动态库的方法 linux库在不指定安装路径时 ...

  5. 聊一聊Linux中的工作队列

    2018-01-18 工作队列是Linux内核中把工作延迟执行的一种手段,其目的不同于软中断,软中断是提高CPU的响应,尽可能的缩短关中断的时间:而工作队列主要目的是节省资源,其比较适合很微小的任务, ...

  6. 【点击模型学习笔记】Modeling contextual factors of click rates_MS_AAAI2007

    概要 并没有觉得这是篇高质量的文章,非常奇怪为什么可以发表在AAAI上面. 文章的创新点比較单薄:在传统点击率预測模型(LR)的基础上增加了两类新的特征,一个是位置特征.一个是广告上下文特征--即和它 ...

  7. react.js 之 create-react-app 命令行工具系统讲解

    react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app ...

  8. sap gui 使用方法, sap logon

    1:打断点:在程序保存并激活之后,可以打内部或外部断点. 如图示. 2:  display 展示程序,不能修改. 3: 查看创建的类的结构,使用more>display object list  ...

  9. requesMapping注解

    java类 package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; impor ...

  10. window下安装mongodb3.6

    系统:Win10 x64位 1.在官网下载对应的mongod https://www.mongodb.com/download-center?jmp=nav#community 2.下载后在win+R ...