<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Http方法 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/http%E6%96%B9%E6%B3%95/</link><description>Recent content in Http方法 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 07 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/http%E6%96%B9%E6%B3%95/index.xml" rel="self" type="application/rss+xml"/><item><title>http方法</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-003/</link><pubDate>Sat, 26 Jul 2025 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/network/network-003/</guid><description>&lt;p&gt;HTTP 协议中定义了多种 &lt;strong&gt;请求方法（HTTP Methods）&lt;/strong&gt;，用于客户端和服务器之间进行不同的操作。&lt;/p&gt;
&lt;h3 id="一常用的-http-方法"&gt;一、常用的 HTTP 方法&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方法&lt;/th&gt;
&lt;th&gt;是否幂等&lt;/th&gt;
&lt;th&gt;是否安全&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GET&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 幂等&lt;/td&gt;
&lt;td&gt;✅ 安全&lt;/td&gt;
&lt;td&gt;获取资源。请求参数放在 URL 上。不会对资源产生副作用。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;POST&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ 非幂等&lt;/td&gt;
&lt;td&gt;❌ 不安全&lt;/td&gt;
&lt;td&gt;提交数据（如表单、上传），可能导致资源变化或创建。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PUT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 幂等&lt;/td&gt;
&lt;td&gt;❌ 不安全&lt;/td&gt;
&lt;td&gt;用于&lt;strong&gt;整体更新&lt;/strong&gt;某个资源（数据完全替换）。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PATCH&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ 非幂等&lt;/td&gt;
&lt;td&gt;❌ 不安全&lt;/td&gt;
&lt;td&gt;用于&lt;strong&gt;部分更新&lt;/strong&gt;资源（只改动部分字段）。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DELETE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 幂等&lt;/td&gt;
&lt;td&gt;❌ 不安全&lt;/td&gt;
&lt;td&gt;删除指定资源。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="二幂等性和安全性解释"&gt;二、幂等性和安全性解释&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;幂等（Idempotent）&lt;/strong&gt;：同一个请求重复执行多次，结果应一样。例如多次 DELETE 相同资源结果相同。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全（Safe）&lt;/strong&gt;：不对服务器资源造成副作用。GET 只查询，不修改数据，因此是安全的。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="三其他常见-http-方法"&gt;三、其他常见 HTTP 方法&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方法&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HEAD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;类似 GET，但不返回响应体，只返回响应头。常用于检测资源是否存在、获取响应信息。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OPTIONS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;用于客户端获取服务器支持哪些方法。也是 CORS 预检请求的一部分。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TRACE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;回显服务器收到的请求，主要用于调试。很少使用，可能存在安全隐患。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CONNECT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;用于建立隧道（如 HTTPS 的代理通信）。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="四使用场景示例"&gt;四、使用场景示例&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;方法&lt;/th&gt;
&lt;th&gt;示例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;获取用户列表&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET /api/users&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;创建用户&lt;/td&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /api/users&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;更新用户信息&lt;/td&gt;
&lt;td&gt;PUT / PATCH&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PUT /api/users/1&lt;/code&gt; 或 &lt;code&gt;PATCH /api/users/1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;删除用户&lt;/td&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DELETE /api/users/1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="总结记住这几点"&gt;总结：记住这几点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GET&lt;/strong&gt; 用于查询（安全、幂等）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;POST&lt;/strong&gt; 用于新增（不幂等）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PUT/PATCH&lt;/strong&gt; 用于修改资源（PUT 是整体替换，PATCH 是部分更新）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DELETE&lt;/strong&gt; 用于删除资源（幂等，但不安全）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OPTIONS/HEAD&lt;/strong&gt; 用于辅助请求。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="常见考点"&gt;常见考点&lt;/h2&gt;
&lt;h4 id="1-语义理解"&gt;1. &lt;strong&gt;语义理解&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;每个方法在 RESTful API 中代表的含义？&lt;/li&gt;
&lt;li&gt;PUT 和 PATCH 的区别？&lt;/li&gt;
&lt;li&gt;GET 和 POST 区别？是否可以用 POST 替代 GET？&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-幂等性与安全性"&gt;2. &lt;strong&gt;幂等性与安全性&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;哪些方法是幂等的？（调用多次结果一致）&lt;/li&gt;
&lt;li&gt;哪些方法是安全的？（不会对服务器资源产生副作用）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-浏览器行为"&gt;3. &lt;strong&gt;浏览器行为&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;表单默认提交方式是什么？（GET 或 POST）&lt;/li&gt;
&lt;li&gt;GET 请求能携带 body 吗？（规范上不能，但部分浏览器允许）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="4-缓存行为"&gt;4. &lt;strong&gt;缓存行为&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;浏览器对 GET、POST 的缓存行为有什么区别？&lt;/li&gt;
&lt;li&gt;为什么 GET 更适合缓存？&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="5-跨域相关cors"&gt;5. &lt;strong&gt;跨域相关（CORS）&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;哪些方法属于“简单请求”？&lt;/li&gt;
&lt;li&gt;使用 PUT/PATCH/DELETE 会触发预检请求（OPTIONS），为什么？&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="6-请求体与响应体"&gt;6. &lt;strong&gt;请求体与响应体&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;哪些方法通常不携带请求体？（如 GET、DELETE）&lt;/li&gt;
&lt;li&gt;哪些方法可以/需要携带请求体？（如 POST、PUT、PATCH）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="7-对比和实际使用中的陷阱"&gt;7. &lt;strong&gt;对比和实际使用中的陷阱&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;PUT/POST 混用的场景（如某些系统用 POST 实现更新）&lt;/li&gt;
&lt;li&gt;DELETE 是否要有请求体？（规范允许，但不推荐）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="可能的延伸考察"&gt;可能的延伸考察&lt;/h3&gt;
&lt;h4 id="restful-api-设计规范"&gt;RESTful API 设计规范&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;REST API 中，如何正确使用 GET/POST/PUT/DELETE 等方法？&lt;/li&gt;
&lt;li&gt;设计一个增删改查接口，如何对应到不同 HTTP 方法？&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="状态码与方法配合"&gt;状态码与方法配合&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;DELETE 成功一般返回什么状态码？（如 204 No Content）&lt;/li&gt;
&lt;li&gt;POST 创建资源后返回什么？（201 Created）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="结合安全问题"&gt;结合安全问题&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;POST/PUT 方法可能面临哪些安全风险？如 CSRF？&lt;/li&gt;
&lt;li&gt;为什么建议对非幂等方法加 CSRF 防护？&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>