精华内容
下载资源
问答
  • HTTP规范中定义了一组常用的请求方法。比如, GET方法负责从服务器获取一个 文档, POST方法会服务器发送需要处理的数据, OPTIONS方法用于确定Web 服务器的一般功能, 或者Web服务器处理特定资源的能力。 HTTP...

    HTTP规范中定义了一组常用的请求方法。比如, GET方法负责从服务器获取一个
    文档, POST方法会向服务器发送需要处理的数据, OPTIONS方法用于确定Web
    服务器的一般功能, 或者Web服务器处理特定资源的能力。

    HTTP协议下常用的7种请求方法

    方法描述是否包含主体
    GET从服务器获取一份文档
    HEAD只从服务器获取文档的首部
    POST向服务器发送带要处理的数据
    PUT将请求的主体部分存储在服务器上
    TRACE对可能经过代理服务器传送到服务器上去的报文进行追踪
    OPTIONS决定可以在胀务器上执行哪些方法
    DELETE从服务器上删除一份文档
    具体描述:

    3.3.2 GET
    GET是最常用的方法。通常用千请求服务器发送某个资源。HTIP/1.1要求服务器
    实现此方法。图3-7显示了一个例子, 在这个例子中, 客户端用GET方法发起了一
    巨习次HTIP请求。
    在这里插入图片描述

    3.3.3 HEAD
    HEAD方法与GET方法的行为很类似, 但服务器在响应中只返回首部。不会返回实
    体的主体部分。这就允许客户端在未获取实际资源的情况下, 对资源的首部进行检
    查。使用HEAD, 可以:
    • 在不获取资源的情况下了解资源的情况(比如, 判断其类型) 1
    • 通过查看响应中的状态码, 看看某个对象是否存在,
    • 通过查涽首部, 测试资源是否被修改了。
    服务器开发者必须确保返回的首部与GET请求所返回的首部完全相同。遵循
    HTTP/1.1规范, 就必须实现HEAD方法。图3-8显示了实际的HEAD方法。
    在这里插入图片描述

    3.3.4 PUT
    与GET从服务器读取文档相反,PUT方法会向服务器写入文档。有些发布系统允
    许用户创建Web页面, 并用PUT直接将其安装到Web服务器上去。
    在这里插入图片描述
    PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名
    的新文档, 或者, 如果那个URL已经存在的话, 就用这个主体来替代它。
    因为PUT允许用户对内容进行修改, 所以很多Web服务器都要求在执行PUT之
    前, 用密码登录。在第12章中可以读到更多有关密码认证的内容。

    3.3.5 POST
    POST方法起初是用来向服务器输入数据的3。实际上, 通常会用它来支持HTML
    的表单。表单中填好的数据通常会被送给服务器, 然后由服务器将其发送到它要去
    的地方(比如, 送到一个服务器网关程序中, 然后由这个程序对其进行处理)。图
    3-10显示了一个用POST方法发起HTTP请求一向服务器发送表单数据一的客
    户端。
    在这里插入图片描述

    3.3.6 TRACE
    客户端发起一个请求时, 这个请求可能要穿过防火墙、代理、网关或其他一些应用
    程序。每个中间节点都可能会修改原始的HTTP 请求。TRACE方法允许客户端在
    最终将请求发送给服务器时, 看看它变成了什么样子。
    TRACE请求会在目的服务器端发起一个“环回” 诊断。行程最后一站的服务器会
    弹回一条TRACE响应, 井在响应主体中携带它收到的原始请求报文。这样客户端
    巨习就可以查看在所有中间HTTP应用程序组成的请求I响应链上, 原始报文是否, 以
    及如何被毁坏或修改过。
    在这里插入图片描述
    TRACE方法主要用于诊断,也就是说, 用千验证请求是否如愿穿过了请求I响应
    链。它也是一种很好的工具,可以用来查看代理和其他应用程序对用户请求所产生
    效果。
    尽管TRACE可以很方便地用千诊断, 但它确实也有缺点, 它假定中间应用程序对
    各种不同类型请求( 不同的方法–GET、HEAD、POST等) 的处理是相同的。
    很多HITP应用程序会根据方法的不同做出不同的事情一比如, 代理可能会将
    POST请求直接发送给服务器, 而将GET请求发送给另一个HITP应用程序(比如
    Web缓存)。TRACE并不提供区分这些方法的机制。通常, 中间应用程序会自行决
    巨回定对TRACE请求的处理方式。
    TRACE请求中不能带有实体的主体部分。TRACE响应的实体主体部分包含了响应
    服务器收到的请求的精确副本。

    3.3. 7 OPTIONS
    OPTIONS方法诮求Web服务器告知其支持的各种功能。可以询问服务器通常支持
    哪些方法, 或者对某些特殊资源支持哪些方法。(有些服务器可能只支持对一些特殊
    类型的对象使用特定的操作)。
    这为客户端应用程序提供了一种手段, 使其不用实际访问那些资源就能判定访问各
    种资源的最优方式。阳3-12显示了一个使用OPTIONS方法的请求。
    在这里插入图片描述

    3.3.8 DELETE
    顾名思义,DELETE方法所做的事情就是请服务器删除请求URL所指定的资源。
    但是, 客户端应用程序无法保证删除操作一定会被执行。因为HTTP规范允许服务
    器在不通知客户端的情况下撤销请求。阳3-13显示了一个DELETE方法实例。
    在这里插入图片描述

    3.3.9 扩展方法
    HTTP被设计成字段可扩展的,这样新的特性就不会使老的软件失效了。扩展方法
    指的就是没有在HTIP/1.1规范中定义的方法。服务器会为它所管理的资源实现一
    些HTTP服务,这些方法为开发者提供了一种扩展这些HTTP服务能力的手段。表
    3-5列出了一些常见的扩展方法实例。这些方法就是WebDAVHTTP扩展(参见第
    19章)包含的所有方法,这些方法有助千通过HTTP将Web内容发布到Web服务
    器上去。
    表3-5 Web发布扩展方法示例

    方法描述
    LOCK允许用户“锁定“ 资源一一比如, 可以在编辑某个资渊的时候将其锁定,以防别人同时对其进行修改
    MKCOL允许用户创建资源
    COPY便于在服务器上复制资源
    MOVE在服务器上移动资源

    允许用户“锁定“ 资源一一比如, 可以在编辑某个资渊的时候将其锁定,
    以防别人同时对其进行修改
    允许用户创建资源
    便于在服务器上复制资源
    在服务器上移动资源
    并不是所有的扩展方法都是在正式规范中定义的,认识到这一点很重要。如果你定
    义了一个扩展方法,很可能大部分HTTP应用程序都无法理解。同样,你的HTTP
    应用程序也可能会遇到一些其他应用程序在用的,而它并不理解的扩展方法。区9
    在这些情况下,最好对扩展方法宽容一些。如果能够在不破坏端到端行为的情况下
    将带有未知方法的报文传递给下游服务器的话,代理会尝试若传递这些报文的。否
    则,它们会以501 Not Implemented (无法实现)状态码进行响应。最好按惯例”对
    所发送的内容要求严一点,对所接收的内容宽容一些” 来处理扩展方法(以及一般
    的HTTP扩展)。
    HTTP

    展开全文
  • vue中axios跨域请求

    万次阅读 2019-06-22 13:22:31
    vue中axios跨域请求 1.axios 是 第三方库 使用方法: 使用 npm: $ npm install axios 使用 bower: $ bower install axios 使用 cdn: <script src="https://unpkg.com/axios/dist/axios.min.js"></...

    vue中axios跨域请求

    1.axios 是 第三方库
    使用方法:

    • 使用 npm:
        $ npm install axios
    
    • 使用 bower:
    $ bower install axios
    
    • 使用 cdn:
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    

    axios get 请求示例

    HTML代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script>
        <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <button @click="getData">get-mock-data</button>
            <button @click="get_api_data"> get-api-data </button>
        </div>
        
    </body>
    </html>
    

    js代码

    <script>
              console.log( axios )
            // 当我们引入axios cdn后会全局暴露出一个axios对象
            new Vue ({
                el:"#app",
                methods:{
                    
                      getData(){
                        // var p = axios({
                        //     url:'./data/name.json'
                        // });
                        // console.log(p);//axios是一个promise对象
    
                        axios({
                            url:"./data/name.json",
                            method:'get',//method默认是get请求
                        }).then(function(res){
                            console.log(res)
                            // axios会对我们请求来的结果进行再一次的封装( 让安全性提高 )
                        }).catch(err=>{
                            console.log(err)
                        })
    
                    },
    

    请求结果 : axios会对我们请求来的结果进行再一次的封装( 让安全性提高 )
    在这里插入图片描述

     //get在线跨域请求
                   get_api_data(){
                      axios({
                          url:'https://请求地址',//在线跨域请求
                          method:"GET",//默认是get请求
                          headers:{//设置请求头
                              'X-Client-Info':' {"a":"3000","ch":"1002","v":"5.0.4","e":"15611234619393093477584"}',
                              'X-Host': 'mall.film-ticket.film.list',
                          },
                          params:{//?search后面的值写在params中
                              cityId: 330100,
                              pageNum: 1,
                              pageSize: 10,
                              type: 1,
                              k: 3969168,
                          }
                      }).then(function(val){
                          console.log(val) // axios会对我们请求来的结果进行再一次的封装( 让安全性提高 )
                      }).catch(function(err){
                          console.log(err)
                      })
                  },
              }
          })
      </script>
    

    get跨域请求中params:中的值对应hearders中Query String Parameters
    在这里插入图片描述
    在这里插入图片描述
    get方法总结:

    A: 无参数
            axios.get(url).then(res=>console.log(res).catch(error=>conosle.log(error))
     B: 有参数
            axios({
                url: 'http://xxx',
                method: 'get' //默认就是get,这个可以省略,
                params: {
                    key: value
                }
            })
    

    axios post 请求示例

    html代码
     <button  @click="postData"> post-data </button>
     
     js代码
           postData(){
                        let params = new URLSearchParams()//得到params对象,用来接收请求参数
                        // params.append( key, value )  key是参数名,value是参数值
                        //传递参数值
                         params.append( 'a', 2 )
                         params.append( 'b', 2 )
    
                        axios({
                            url:'http//localhost/php',
                            method:'post',
                            headers:{//请求头设置为表单提交的请求头
                                'Content-Type':"application/x-www-form-urlencoded"
                            },
                            data:params,
                        }).then( function (val) {
                            console.log(res)
                        }).catch( function (error) { 
                            console.log(error)
                        })
                    }
                }
                官方文档中axios post请求案例有点问题,请求会出现跨域问题;
    			以上示例为解决官方文档存在问题的写法;
    

    post方法总结

    //对于post请求可以统一设置一个请求头,后面所有post请求就可以不用单独设置请求头了
    axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    
     // 具体语法
     let params = new URLSearchParams()//得到params对象,用来接收请求参数
    
    // params.append(key,value) //请求参数写成键值对key就是参数名,value就是参数值
    
    params.append('a',1)
    params.append('b',2)
    
    axios({
        url: 'http://localhost/post.php',
        method: 'post',
        data: params,//将请求参数写入data;
          headers: {  //单个请求设置请求头
           'Content-Type': "application/x-www-form-urlencoded"
        }
    })
    .then(res => {
        console.log( res )
    })
    .catch( error => {
        if( error ){
        throw error
    }
    })
    
    展开全文
  • Python 面试100讲(基于Python3.x)

    万人学习 2019-11-15 10:20:42
    本课程搜集了各大互联网公司的Python面试题以及类似的题目。课程体系包括Python语言本身的知识、Python SDK、Web、Python爬虫以及算法等内容。所以的源代码都使用Python3.x编写。Python相关知识包括基本语法、正则...
  • HTTP请求方式中8种请求方法(简单介绍)

    万次阅读 多人点赞 2018-08-10 13:51:00
    HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是...

    HTTP请求方式中8种请求方法(简单介绍)

    简单介绍

    HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口如:http://www.ip138.com:80。 需要注意的是,现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。

     

    HTTP请求的方法:

    HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

     

    1、OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
    2、HEAD
    向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
    3、GET
    向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
    4、POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
    5、PUT
    向指定资源位置上传其最新内容
    6、DELETE
    请求服务器删除Request-URL所标识的资源
    7、TRACE
    回显服务器收到的请求,主要用于测试或诊断
    8、CONNECT
    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    注意:
    1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
    2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

    HTTP工作原理

    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

     HTTP 请求/响应的步骤:

    客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

    1、客户端连接到Web服务器

    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com

    2、发送HTTP请求

    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    3、服务器接受请求并返回HTTP响应

    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

    4、释放连接TCP连接

    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    5、客户端浏览器解析HTML内容

    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

    HTTP请求消息Request

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式

    请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

    请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本
    Get请求例子,使用Charles抓取的request:
    GET /562f25980001b1b106000338.jpg HTTP/1.1
    Host    img.mukewang.com
    User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept image/webp,image/*,*/*;q=0.8 Referer http://www.imooc.com/ Accept-Encoding gzip, deflate, sdch Accept-Language zh-CN,zh;q=0.8
    第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

    GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。

    第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

    从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等

    第三部分:空行,请求头部后面的空行是必须的

    即使第四部分的请求数据为空,也必须有空行。

    第四部分:请求数据也叫主体,可以添加任意的其他数据。

    这个例子的请求数据为空。

    POST请求例子,使用Charles抓取的request:
    POST / HTTP1.1
    Host:www.wrox.com
    User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley

    第一部分:请求行,第一行明了是post请求,以及http1.1版本。
    第二部分:请求头部,第二行至第六行。
    第三部分:空行,第七行的空行。
    第四部分:请求数据,第八行。

    HTTP请求消息Response

    一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

     

    例子

    HTTP/1.1 200 OK
    Date: Fri, 22 May 2009 06:07:21 GMT
    Content-Type: text/html; charset=UTF-8
    
    <html>
          <head></head> <body> <!--body goes here--> </body> </html>
    第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

    第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)

    第二部分:消息报头,用来说明客户端要使用的一些附加信息

    第二行和第三行为消息报头,
    Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

    第三部分:空行,消息报头后面的空行是必须的
    第四部分:响应正文,服务器返回给客户端的文本信息。

    空行后面的html部分为响应正文。

    请求返回状态码:

    200 OK  当您的操作将在响应正文中返回数据时,出现此结果。

    204 No Content 当您的操作成功,但不在响应正文中返回数据时,出现此结果。

    304 Not Modified(重定向)  当测试实体自上次检索以来是否被修改时,出现此结果。

    403 Forbidden   客户端错误

    401 Unauthorized 客户端错误

    413 Payload Too Large(客户端错误) 当请求长度过长时,出现此结果。

    400 BadRequest(客户端错误) 当参数无效时,出现此结果。

    404 Not Found(客户端错误) 当资源不存在时,出现此结果。

    405 Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。

    412 Precondition Failed  客户端错误

    501 Not Implemented(服务器错误) 当未实施某个请求的操作时,出现此结果。

    503 Service Unavailable(服务器错误) 当 Web API 服务不可用时,出现此结果。

    GET与POST:

     “get”方法提交的数据会直接填充在请求报文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ”   “?”问号划分域名和get提交的参数,A=B中的A是参数名,B是参数值,多个参数之间用&进行分割,如果参数值是中文,则会转换成诸如%ab%12加密16进制码。一般来说,浏览器处理的URL最大限度长度为1024B(不同浏览器不一样),所以GET方法提交参数长度有限制。

            “post”方法提交的数据会附在正文上,一般请求正文的长度是没有限制的,但表单中所能处理的长度一般为100k(不同协议不同浏览器不一样),而且需要考虑下层报文的传输效率,不推荐过长。

            所以GET方法可以用来传输一些可以公开的参数信息,解析也比较方便,如百度的搜索的关键词,而POST方法可以用来提交一个用户的敏感信息(如果不使用HTTPS加密,报文正文仍旧是明文,容易被人截获读取)

    主要特点

    1、无连接

    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    2、无状态

    HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

     3、简单快速

    客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    4、灵活

    HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    5、支持B/S及C/S模式

     

     

    作业:

    了解 HTTP 协议的基本知识,包括请求流程、请求方法等

      http是超文本传输协议,默认端口号为80,客户端是动态的,浏览器会自动默认为80

      https默认端口号为443

      请求方法8种

      get、post、put、delete、options、trace、connect、head

      请求流程2种分为request和response,但是他们的流程都是相同的,一个请求一个接收

      流程为:状态行、消息报头、空行和响应正文

      请求响应步骤:

      客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

       

     

    posted @ 2018-08-10 13:51 韦邦杠 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • REST的请求方法有哪些,什么区别?】 这里是修真院前端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识...

    这里是修真院前端小课堂,本篇分析的主题是

    【什么是RESTFUL?REST的请求方法有哪些,有什么区别?】

    这里是修真院前端小课堂,每篇分享文从

    【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

    八个方面深度解析前端知识/技能,本篇分享的是:

    【什么是RESTFUL?REST的请求方法有哪些,有什么区别?】

    1.背景介绍

    restFul是符合rest架构风格的网络API接口,完全承认Http是用于标识资源。restFul URL是面向资源的,可以唯一标识和定位资源。 对于该URL标识的资源做何种操作是由Http方法决定的。 rest请求方法有4种,包括get,post,put,delete.分别对应获取资源,添加资源,更新资源及删除资源.

     

    2.知识剖析

    如何编写符合rest架构风格的restful?

     

    1.URL中不可出现动词

     

    2.URL能够唯一地标识单个或一类资源

    3.通过Http动词去操作URL标识的资源(get(获取),pst(添加),put(更新),delete(删除))

    错误写法示例

     

    错误写法

    该网络API接口URL中使用了动词,并没有做到只标识和定位资源

    正确写法示例

    正确写法

    该网络API接口URL仅标识和定位资源,通过Http方法Post表明是一个添加资源的处理器

    REST请求方法解析

     

    GET

    get方法在Rest中主要用于获取资源,能够发送参数,不过有限制,且参数都会以?开头的形 式附加在URL尾部

     

     

     

    get参数

    因为参数信息会完全暴露,因此是不推荐发送重要信息的。get方法产生一个tcp数据报一次发送完毕。

    规范的get方法处理器应该是幂等的,也就是说对一个资源不论发送多少次get请求都不会更改数据或造成破坏。

    应该在编写处理器的时候保证幂等从而提高安全性

    POST

    post方法在Rest请求中主要用于添加资源,参数信息存放在请求报文的消息体中相对安全,且可发送较大信息

    post因为参数信息存在方消息体中相对安全,一般用于发送重要数据,且post产生两个tcp数据报需要发送两次完成

    对于get和post的本质区别该博客写的非常好

    规范化的post方法处理器是不幂等的,因此如果用户重复对一个资源进行post应该在处理器中做出限制和处理保证对数据不造成破坏和更改 从而提高安全性.get和post本质区别

    PUT

    put方法在Rest中主要用于更新资源,因为大多数浏览器不支持put和delete,会自动将put和delete请求转化为get和post. 因此为了使用put和delete方法,需要以post发送请求,在表单中使用隐藏域发送真正的请求。

    put方法的参数是同post一样是存放在消息中的,同样具有安全性,可发送较大信息。

    put方法是幂等的,对同一URL资源做出的同一数据的任意次put请求其对数据的改变都是一致的。比如更新/student/2的name值为bobdylan

    不论提交该请求多少次,/student/2资源的name值会于提交一次请求无异

    DELETE

    Delete在Rest请求中主要用于删除资源,因为大多数浏览器不支持put和delete,会自动将put和delete请求转化为get和post.因此为了使用put和delete方法,需要以post发送请求,在表单中使用隐藏域发送真正的请求。

    Delete方法的参数同post一样存放在消息体中,具有安全性,可发送较大信息 Delete方法是幂等的,不论对同一个资源进行多少次delete请求都不会破坏数据

     

    3.常见问题

    浏览器自动转化PUT和DELETE为GET和POST,容器找不到对应的处理器报错

    rest风格规定URL标识资源,使用Http的四个方法对资源进行操作。但在浏览器发送请求时会自动将put和post 转化为get和post.这样rest风格就成了鸡肋,且发送请求会报错说找不到get方法或post方法。

    为什么不支持delete和put方法是因为html4官方在表单中仅支持get和post方法,忽略了Put和Delete以及其他Http方法. 尽管在html5和一些新的浏览器支持所有的http方法,但不可能所有用户都使用最新的浏览器。

     

    4.解决方案

    1.首先第一种是前端人员通过ajax发送,因为不懂前端所以不详述

    2.通过在form表单中使用隐藏域在服务器端配置过滤器来发送真实请求

    3.使用Spring的sf:form表单来提交

    第一种就不详述了

    第二种在编码实战中进行演示

    第三种方法因为资料不全,是在Spring实战这本书中看到的,自己尝试实现失败了。见Spring实战这本书305页

     

    5.编码实战

    PPT地址:PPT

    视频地址:视频

    6.扩展思考

     

    7.参考文献

    参考一: get和post的本质区别

    参考二: SpringMvc中发送put和Delete请求

    参考三: Spring实战第11章305页《提交RestFul表单》

     

    今天就分享到这里,欢迎大家交流、讨论、拍砖,送花

    --------------------------------------------------------------------------------------------------------
    “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。
    ————————————————
    技能树.IT修真院

    展开全文
  • HTTP请求方法OPTIONS预检请求

    千次阅读 2020-01-16 19:12:44
    浏览器对复杂跨域请求在真正发送请求之前,会先进行一次预请求,就是参数为OPTIONS的第一次请求,他的作用是用于试探性的服务器响应是否正确,即是否能接受真正的请求,如果在options请求之后获取到的响应是拒绝性质的,...
  • 请求方法之Option

    千次阅读 2019-02-26 18:10:09
    除了常用的GET、POST请求方法以外还有一个请求方法是经常遇到的,那就是OPTION预检请求 OPTION用来查询针对请求URI指定的资源支持的方法。 简单来说就是发送 OPTION请求询问服务器,你支持哪种请求方法啊? 支持GET...
  • 常用的HTTP请求方法

    千次阅读 2019-07-15 17:20:53
    前端日常发送HTTP请求一般只用到GET, POST两种方法,如果是在一个符合RESTful设计规范的应用中,常用到5个方法。 PS: RESTful设计规范是前后端接口设计的一种规范,遵从了这一规范,可以大大节约沟通的成本,RESTful...
  • http请求 302解决方法

    千次阅读 2020-08-30 15:16:46
    http请求 302解决方法
  • 常用的HTTP请求方法,按照RFC2616标准(HTTP1.1)来看,通常以下8种方法:get、post、put、delete、head、trace、connect、options。
  • http请求与Request常用方法

    万次阅读 多人点赞 2018-10-01 10:26:51
    ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的...
  • HTTP报文的请求体和方法详解

    千次阅读 2018-07-14 15:48:03
    本章了解内容报文时如何流动的HTTP报文的三个组成部分(起始行,首部和实体的主体部分)请求和响应报文之间的区别请求报文支持的各种功能和响应报文一起返回的各种状态码各种各样的HTTP首部都是用来做什么的。...
  • 案例 let obj = { contractId: 1, // 操作 flowStatus: 2 reason: 3, }; util.ajax .get( "bsm/api/contract/v1/renewal/examine", {params: obj}) ...
  • Https网站请求Http内容

    万次阅读 2020-06-12 16:49:11
    Https网站请求Http内容Https网站中无法请求Http资源(静态资源、接口等)分析解决方法 Https网站中无法请求Http资源(静态资源、接口等) 今天遇到个问题:Mixed Content: The page at ‘https://*****’ was ...
  • 本篇文章将对项目中如何封装axios常用的请求方法进行介绍,其中包括最容易出问题的post请求的解释,包括一些请求格式和参数格式不一致问题的解决; 通用配置 这些配置是在axios官方文档中没有列出来的,主要是post...
  • axios中取消请求及阻止重复请求方法

    万次阅读 多人点赞 2019-06-26 11:10:55
    这里主要是为了阻止用户在某些情况下短时间内重复点击某个按钮,导致前端后端重复发送多次请求。这里我列举两种比较常见的实际情况: PC端 - 用户双击搜索按钮,可能会触发两次搜索请求 移动端 - 因移动端没有...
  • HTTP请求方法详解

    万次阅读 2016-04-27 12:39:47
    HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。这8种我们一起来分析一下,其中最常用的也...
  • Request获取请求参数的通用方法

    千次阅读 2020-07-07 15:03:31
    从这里Request获取请求数据实例我们可以了解到,get请求和post请求获取请求参数有着不一样的方法,这对我们的封装很不方便,下面就介绍一种获取请求参数的通用方法 String getParameter(String name):根据参数...
  • get请求方式可以带方法体吗?

    万次阅读 2020-07-01 20:31:07
    前言: 前几天同学在...或者也可以把请求方法改成post。不过第一次见到get请求方式这样使用,我感觉很古怪。因为按照我以前的学习来看,它是不行的,至少不符合规范。如果使用html的表单,是无法做到的,所以前面的
  • http 几种请求方法的差别

    万次阅读 多人点赞 2016-09-19 14:45:22
    在其中8个不同的请求方法: GETPOSTHEADPUTDELETEOPTIONSTRACECONNECT 这8个方法中GET和POST最常见。 1. GET方法 [plain] view plain copy 它本质就是发送一个请求来取得服务器上的某一资源...
  • vue 中请求接口的两种方法

    万次阅读 2019-04-28 17:19:03
    vue 项目安装axios: cnpm install axios --save import axios from 'axios' 哪个文件需要用到就在哪个文件中引入 ... import qs from 'qs' qs 用来解决vue中post请求以 a=a&b=b 的格式 ma...
  • Vue.js 2.0之全家桶系列视频课程

    万人学习 2018-04-21 16:52:25
    基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,...
  • 经历了一波秋招,整理了一部分面试题,也是趁这个机会再巩固一下知识点。(本来想把所有的知识点都写在一篇博客中,感觉太冗长了,...1、请求的方法:HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。  HTT...
  • 由patch请求方法引发的一些总结

    万次阅读 2018-08-21 18:07:19
    patch方法用来更新局部资源,这句话我们该如何理解? 假设我们一个UserInfo,里面userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么...
  • 异步请求的几种方法

    千次阅读 2018-07-18 14:19:34
     //由于浏览器兼容的原因,代码复杂,多使用基于jQuery的异步请求方法(内部封装) 2.基于jQuery的Ajax方法:  (1)load(url,[data],[callback]),实例如下:  $("#test").load("test.php",...
  • GET GET 请求是最常见的请求类型,最常用于服务器查询某些信息。 必要时,可以将查询字符串参数追加到 URL 末尾,以便将信息发送给服务器。 对于 XHR 而言,传入 ...POST请求可能会导致新的资源的建立和/或已...
  • HTTP的get_post请求方法

    千次阅读 2016-07-26 17:03:33
    HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结 时间:2015-03-20 16:00:51 阅读:8484 评论:0 收藏:1 [点我收藏+] 标签:  HTTP请求报文:   一个HTTP请求报文由四个...请求行由请求方法字段、
  • 这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。...所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。 1.POST接口举例浏览器打开https://re...
  • jQuery中AJAX请求常见常用的几种方法

    万次阅读 2020-06-16 14:17:04
    原生AJAX请求 JQuery中的AJAX请求 1.$.ajax 方法 url 表示请求的地址 type 表示请求的类型 GET 或 POST 请求 data 表示发送给服务器的数据格式两种: 一:name=value&name=value 二:{key:value} success 请求...
  • 本篇我们来学习HTTP中常见的请求方法,一般我们都知道GET和POST两种,其他的可能就记得不是很清楚。其实,和数据库操作一样,HTTP请求也好几种,至少是增删改查这四种方法。为了弄清楚这几种方法和方法的含义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,491,969
精华内容 996,787
关键字:

向网站请求的方法有