网络服务
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