美文网首页
HTTP方法与HTML表单

HTTP方法与HTML表单

作者: 胜果铺子 | 来源:发表于2022-01-09 12:53 被阅读0次

    HTTP协议设计了几种请求“方法”:GET、POST、PUT、DELETE等等。但是HTML的表单以及浏览器只能发送2种方法:GET、POST。

    一般的HTTP flow都是客户端(浏览器)向服务器发送request,服务器处理完后,发回一个response。不论是浏览网页,还是发送表单,都是以请求-响应的形式。An overview of HTTP

    HTML表单不论用GET还是POST方法,作用都是发送一系列 键值对 给服务器。所不同的是,GET会将键值对写在请求的URL后面,POST会把键值对写在HTTP请求的BODY部分。此外POST还可以发送文件。从后端编程的角度来说,拿到的都是已经解析好的键值对,存放在一个字典结构中。参见:Sending form data

    下面是POST请求的例子:

    POST / HTTP/2.0
    Host: foo.com
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 13
    
    say=Hi&to=Mom
    

    浏览器只用GET与POST,导致POST必须多用途,用于增、删、改等不同功能,而HTTP原先设计的丰富方法动词则无人问津。后来,XMLHttpRequest的出现改变了这一点。它可以从JavaScript脚本向服务器发送各种HTTP请求,不再限于发送HTML表单数据。这一改变具有革命性的意义。网页也可以异步,不切换页面的情况下与服务器交互,与客户端无异。而网页的跨平台、免安装特性是客户端所无法比拟的。Ajax: A New Approach to Web Applications

    更现代的写法是用fetch取代XMLHttpRequest。主要区别在于 Fetch API 使用 Promises,它实现了更简单、更干净的 API,避免了回调地狱,也无须记住 XMLHttpRequest 的复杂 API。Introduction to fetch() 发表时间:2015-3

    而且,async/await语法出现之后,异步编程就更加简单了。How to Use Fetch with async/await

    总结

    以前的浏览器/服务器交互是:(1) 浏览器发GET请求,服务器返回网页。(2)浏览器POST/GET附带一组键值对(也就是FORM),服务器根据这组键值对更改数据库,然后返回网页。

    浏览器传给服务器的,要么就是键值对,要么就只是一个网址。服务器返回的总是一个网页。

    现在的fetch/服务器交互是:(1) 浏览器向服务器发送HTTP请求,内容是放在请求BODY里的JSON。(2) 服务器返回的内容也是放在BODY里的JSON,而不再是完整的网页。

    下面是一个服务器返回JSON形式的response的例子:

    HTTP 200 OK
    Content-Type: application/json
    Content-Length: 50
    Server: Werkzeug/0.16.0 Python/3.7.3
    Date: Fri, 27 Mar 2020 19:11:45 GMT
    
    {"response_value_1":1,"response_value_2":"value"}
    

    相关文章

      网友评论

          本文标题:HTTP方法与HTML表单

          本文链接:https://www.haomeiwen.com/subject/liwycrtx.html