Python Http Web服务 - URLLIB,HTTPLIB2(一,HTTP协议简介)

网络服务

Web服务软件系统,用于支持网络上的可互操作的机器与机器交互。它有一个机器可识别的格式描述的Web服务描述语言(WSDL)。
其他系统以SOAP消息的描述方式与Web服务交互,通常与其他Web相关标准一起使用http序列化与XML序列化相结合。

简单讲,我们可以这样来描述HTTP Web服务:只使用HTTP的操作,与远程服务器交换数据。


HTTP请求

为了构建和调试有效的Web服务,了解HTTP协议的细节是非常重要的。
HTTP协议总是由客户端向服务器发送请求。
假设我们现有服务器、客户端,以及有一个正在发送的请求。现在,该请求的关键部分之一是客户请求服务器所要表示的含义、采取什么样的响应。
因此,每个请求都有一个请求方法,即客户请求服务器为其承担的动作或响应。
所有请求都被指定为一个请求方法,该方法应应用于服务器上的特定资源。

例如,当我们访问一个网页时,使用我们的浏览器,我们通常做的是发送一个GET请求,资源通常是一个网页,如“index.html”,这通常是网站的核心网页。
在这种情况下,get是请求方法,而资源是“index.html”。

通常将资源指定为服务器上资源的路径。所以,资源通常是一条路径。我们会看到类似这样的内容,“/index.html”或“foo / mypage”或其他我们想访问的资源。

http协议中有各种各样的请求方法。我们想要了解的最重要的一个就是对服务器的简单请求GET。它可以是没有数据或可能包含一点点的数据,它请求服务器获得一些资源,并将其返回给我们。

Post用于更通用的目的,例如将数据发送到服务器。
如果我们想从服务器获取数据,请使用http GET
以下为几种方法及其简单描述图:

这里写图片描述
所以,当我们在url中输入以下内容时:

http://www.bogotobogo.com/foo

在内部,我们正在发出以下请求行,请求来自http服务器的页面:

GET / foo http / 1.1
#1  GET - 方法
#2  / foo - 路径
#3  http / 1.1 - 版本

下面是另一个更复杂一点的例子,猜猜会怎么请求呢:

http://www.bogotobogo.com/foo/bogo.png?p=python#fragment

答案是:

GET /foo/bogo.png?p=python http / 1.1

主机www.bogotobogo.com将用于连接connection,分段在客户端处理。


实际上,http请求类型有更多的,还有称为header的,它由name:value 这种pair类型组成:

Host: www.bogotobogo.com
User-Agent: Chrome

虽然我们已经建立了连接,但是我们需要主机,因为Web服务器可能会托管多个域名。

如果我们想发送新的数据到服务器,使用http POST。一些更高级的http web服务API也允许使用http PUT和http DELETE来创建,修改和删除数据。
不用注册等操作,内置于http协议中的这些请求动作(GET,POST,PUT和DELETE)直接映射到应用程序级别的操作,用于获取,创建,修改和删除数据。

这种方法的主要优点是简单,其简单性已被证明是流行的。数据 - 通常是xml或json - 可以静态构建和存储,也可以由服务器端脚本动态生成,所有主要的编程语言(包括Python,当然!)都包含一个用于下载的http库。调试也更容易; 由于http Web服务中的每个资源都有唯一的地址(以url的形式),因此我们可以将其加载到我们的Web浏览器中,并立即查看原始数据。


HTTP响应

对于下面的http请求:

GET / foo http / 1.1

服务器的响应应该是这样的;

http / 1.1 200 OK

该行称为状态行:

1.200:状态码
2.OK: 原因

以下是一些状态代码:
状态 ——- 含义 ———————–例
1XX ——- 信息 —————–100 =服务器同意处理客户的请求
2XX ——- 成功(OK)——–200 =请求成功,204 =不存在内容
3XX ——- 重定向 ————–301 =页面移动,304 =缓存页面仍然有效
4XX ——- 客户端错误 ——–403 =禁止页面,404 =未找到页面
5XX ——- 服务器错误 ——–500 =内部服务器错误,503 =稍后重试


原文地址:

http://www.bogotobogo.com/python/python_http_web_services.php
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值