Http协议的请求,响应 Django中的HttpRequest对象

HTTP协议的请求和响应

  • 请求是指浏览器端通过HTTP协议发送给服务器端的数据
  • 响应是指服务器端接收到请求后做相应的处理后再回复给浏览器端的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PfqhBymG-1654824128765)(./images/request_response.png)]

HTTP 请求

POST /v1/tokens HTTP/1.1     -> 起始行

Host: 127.0.0.1:8000         -> headers
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:74.0) Gecko/20100101 Firefox/74.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 58
Origin: http://127.0.0.1:7000
Connection: keep-alive
Referer: http://127.0.0.1:7000/dadashop/templates/login.html

{"username":"guoxiaonao"}     -> body 
  • 根据HTTP标准,HTTP请求可以使用多种请求方法。
  • HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法(最常用)
  • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
  • HTTP1.1 请求详述
    序号方法描述
    1GET请求指定的页面信息,并返回实体主体。
    2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
    3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
    4PUT从客户端向服务器传送的数据取代指定的文档的内容。
    5DELETE请求服务器删除指定的页面。
    6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    7OPTIONS允许客户端查看服务器的性能。
    8TRACE回显服务器收到的请求,主要用于测试或诊断。

HttpRequest对象

  • 视图函数的第一个参数是HttpRequest对象
    - 服务器接收到http协议的请求后,会根据请求数据报文创建HttpRequest对象

HttpRequest属性

  • path_info: URL字符串
    - method:字符串,表示HTTP请求方法,常用值:‘GET’、‘POST’
    - GET:QueryDict查询字典的对象,包含查询字符串的所有数据
    - POST:QueryDict查询字典的对象,包含post表单提交方式的所有数据
    - FILES:类似于字典的对象,包含所有的上传文件信息
    - COOKIES:Python字典,包含所有的cookie,键和值都为字符串
    - session:似于字典的对象,表示当前的会话
    - body: 字符串,请求体的内容(POST或PUT)
    - scheme : 请求协议(‘http’/‘https’)
    - request.get_full_path() : 请求的完整路径
    - request.get_host() : 请求的主机
    - request.META : 请求中的元数据(消息头)
    - request.META[‘REMOTE_ADDR’] : 客户端IP地址
HTTP 响应
HTTP/1.0 200 OK                        -> 起始行

Date: Sat, 21 Mar 2020 09:44:15 GMT    -> headers
Server: WSGIServer/0.2 CPython/3.6.8
Content-Type: application/json
X-Frame-Options: SAMEORIGIN
Content-Length: 217
Vary: Origin
Access-Control-Allow-Origin: *

{"code": 200, "username": "guoxiaonao"} -> body 
  • 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

  • HTTP状态码的英文为HTTP Status Code。

  • 下面是常见的HTTP状态码:

    • 200 - 请求成功
    • 301 - 永久重定向-资源(网页等)被永久转移到其它URL
    • 302 - 临时重定向
    • 404 - 请求的资源(网页等)不存在
    • 500 - 内部服务器错误
  • HTTP状态码分类

    • HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

      分类分类描述
      1**信息,服务器收到请求,需要请求者继续执行操作
      2**成功,操作被成功接收并处理
      3**重定向,需要进一步的操作以完成请求
      4**客户端错误,请求包含语法错误或无法完成请求
      5**服务器错误,服务器在处理请求的过程中发生了错误
  • Django中的响应对象HttpResponse:

    • 构造函数格式:

      • HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
    • 作用:

      • 向客户端浏览器返回响应,同时携带响应体内容
    • 参数:

      • content:表示返回的内容。
      • status_code:返回的HTTP响应状态码(默认为200)。
      • content_type:指定返回数据的的MIME类型(默认为"text/html")。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。
        • 常用的Content-Type如下:
          • 'text/html'(默认的,html文件)
          • 'text/plain'(纯文本)
          • 'text/css'(css文件)
          • 'text/javascript'(js文件)
          • 'multipart/form-data'(文件提交)
          • 'application/json'(json传输)
        • 'application/xml'(xml文件)

        注: 关键字MIME(Multipurpose Internet Mail Extensions)是指多用途互联网邮件扩展类型。

  • HttpResponse 子类

    类型作用状态码
    HttpResponseRedirect重定向302
    HttpResponseNotModified未修改304
    HttpResponseBadRequest错误请求400
    HttpResponseNotFound没有对应的资源404
    HttpResponseForbidden请求被禁止403
    HttpResponseServerError服务器错误500
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fan Wang&YuanyuanLuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值