web应用、HTTP协议及web框架简介

1. web应用

1.1 web应用程序

  • Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件
  • B/S模式(浏览器/服务端)

1.2 B/S架构优点

  • 这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理
  • 在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载
  • 只需要有浏览器就可以了,不需要安装其他应用程序

1.3 基于socket的web应用

import socket
server = socket.socket()
server.bind(('127.0.0.1', 8002))
server.listen(5)
while True:
    conn, client = server.accept()
    data = conn.recv(1024)
    # 接收到的消息转化成字符串
    data = str(data, encoding='utf-8')
    print(data)
    resquse_list = data.split('\r\n')
    # 将请求首行再切分
    first_list = resquse_list[0].split(' ')
    # 响应头信息,协议类型,200发送成功,\r\n\r\n后可以再加响应体(返回给页面的信息)
    conn.send(b'HTTP/. 200 OK\r\nContent-Type:text/html\r\n\r\n')
    if first_list[1] == '/qc1':
        with open('qc1.html', 'rb')as f:
            data = f.read()
        conn.send(data)
    elif first_list[1] == '/qc2':
        with open('qc2.html', 'rb')as f1:
            data = f1.read()
        import datetime
        now = datetime.datetime.now().strftime('%Y-%m-%d %X')
        data = data.replace('hello',now)
        conn.send(data.encode('utf-8'))
    else:
        conn.send(b'404')
    conn.close()

  

------------------------------------------ html文件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> hello </body> </html> 

2.HTTP协议

2.1 简介

  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。
  • HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统,
  • HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

2.2 协议特征

  • 基于TCP/IP协议之上的应用层协议;
  • 请求——相应模式,由客户端发起,服务端响应;
  • HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议 自身不对请求和响应之间的通信状态进行保存;
  • 无连接,限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

2.3 HTTP请求与响应协议

2.3.1 定义

  • 浏览器发送到服务端要遵循请求协议(请求报文),服务器向浏览器返回信息要遵循响应协议(响应报文);浏览器与服务器通过 HTTP协议交互的信就是HTTP报文(由多行数据构成的文本)

2.3.2 协议格式

  • 请求协议
# 请求首行:请求类型  请求地址  请求协议
GET /index HTTP/1.1\r\n # 请求头 Host: 127.0.0.1:8001\r\n Connection: keep-alive\r\n Cache-Control: max-age=0\r\n Upgrade-Insecure-Requests: 1\r\n User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n Accept-Encoding: gzip, deflate, br\r\n Accept-Language: zh-CN,zh;q=0.9\r\n\r\n' # 请求体 。。。。 ------------------------------------- GET与POST请求方式 (1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的请求体中. (2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制. (3)GET与POST请求在服务端获取请求数据方式不同 
  • 响应协议
access-control-allow-origin: *
cache-control: public,max-age=25920000
content-encoding: gzip
content-type: application/javascript
date: Sat, 25 Aug 2018 11:31:15 GMT
last-modified: Tue, 09 Feb 2016 15:15:15 GMT
server: Tengine
status: 200
vary: Accept-Encoding
-------------------------------------
响应状态码

2.3.3 统一资源定位符(URL)

  • 统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
  • 格式
协议://IP:端口(80)/路径?name=lqz&age=18 注:?之前的是请求路径,?之后的是请求数据部分,数据以&相连接

猜你喜欢

转载自www.cnblogs.com/quqinchao/p/9898521.html
今日推荐