part of Hypertext Transfer Protocol -- HTTP/1.1
RFC 2616 Fielding, et al.

9 Method Definitions

The set of common methods for HTTP/1.1 is defined below. Although this set can be expanded(扩大;使…变大;伸展;伸开), additional(补充;额外的,附加的;另外的,追加的;外加) methods cannot be assumed(假定的;假装的;假冒的;被承担的) to share the same semantics(语义学;词义学) for separately(分别地,另行;分开,单独;分离地;个别地) extended clients and servers.

The Host request-header field (section 14.23) MUST accompany(陪伴,陪同;附加,补充;与…共存;) all HTTP/1.1 requests.

9.1 Safe(安全的;保险的,肯定的;无损的;提供保护的) and Idempotent(幂等,等幂) Methods

9.1.1 Safe Methods

Implementors(实现者) should be aware(意识到的;知道的;觉察到的) that the software(软件;软体;软设备) represents(代表;体现;表现) the user in their interactions(互动;一起活动) over the Internet, and should be careful to allow the user to be aware of any actions they might take which may have an unexpected significance(意义;重要性;意思) to themselves or others.

In particular(特别的;详细的;独有的;挑剔的), the convention(国际公约;惯例,习俗,规矩) has been established(已建立的;已设立的;已制定的;确定的) that the GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval(检索;收回,挽回). These methods ought to be considered "safe". This allows user agents to represent(表现,象征;代表,代理;扮演;作为示范) other methods, such as POST, PUT and DELETE, in a special way, so that the user is made aware of the fact that a possibly unsafe action is being requested.

Naturally, it is not possible to ensure that the server does not generate side-effects as a result of performing a GET request; in fact, some dynamic(动态的;动力的,动力学的;充满活力的,精力充沛的;不断变化的,充满变数的) resources consider that a feature. The important distinction(区别;荣誉;特质;卓越) here is that the user did not request the side-effects, so therefore cannot be held accountable(负有责任的) for them.

9.1.2 Idempotent Methods

Methods can also have the property of "idempotence" in that (aside from error or expiration issues(问题,发表,宣布,分配)) the side-effects of N > 0 identical(同一的;完全同样的,相同的;恒等的;) requests is the same as for a single request. The methods GET, HEAD, PUT and DELETE share this property. Also, the methods OPTIONS and TRACE SHOULD NOT have side effects(边际效应,副作用), and so are inherently(天性地,固有地) idempotent.

However, it is possible that a sequence(数列,序列;) of several requests is non- idempotent, even if all of the methods executed in that sequence are idempotent. (A sequence is idempotent if a single execution(依法处决;实行,执行;演奏) of the entire sequence always yields(产量( yield的名词复数 );收益量;[财政学]投资实得率) a result that is not changed by a reexecution(重新执行) of all, or part, of that sequence.) For example, a sequence is non-idempotent if its result depends on a value that is later modified in the same sequence.

A sequence that never has side effects is idempotent, by definition(定义;规定,明确;) (provided that no concurrent(同时发生的;同时完成的;) operations are being executed on the same set of resources).

9.2 OPTIONS

The OPTIONS method represents(代表;体现;) a request for information about the communication options available(可获得的;有空的;可购得的;能找到的) on the request/response chain identified(确认;辨认;) by the Request-URI. This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities(容量;能力) of a server, without implying(暗示,暗指) a resource action or initiating(发起;开始) a resource retrieval.Responses to this method are not cacheable.

If the OPTIONS request includes an entity-body (as indicated by the presence of Content-Length or Transfer-Encoding), then the media type MUST be indicated by a Content-Type field. Although this specification does not define any use for such a body, future extensions to HTTP might use the OPTIONS body to make more detailed queries on the server. A server that does not support such an extension MAY discard(丢弃,抛弃;) the request body.

If the Request-URI is an asterisk ("*"), the OPTIONS request is intended(预期的;有意的) to apply to the server in general rather than to a specific resource. Since a server's communication options typically depend on the resource, the "*" request is only useful as a "ping" or "no-op" type of method; it does nothing beyond allowing the client to test the capabilities of the server. For example, this can be used to test a proxy for HTTP/1.1 compliance(服从,听从) (or lack thereof).

If the Request-URI is not an asterisk, the OPTIONS request applies only to the options that are available when communicating with that resource.

A 200 response SHOULD include any header fields that indicate optional features implemented(执行;实现) by the server and applicable(适当的;可应用的) to that resource (e.g., Allow), possibly including extensions not defined by this specification. The response body, if any, SHOULD also include information about the communication options. The format for such a body is not defined by this specification, but might be defined by future extensions to HTTP. Content negotiation(协商,谈判;转让;通过) MAY be used to select the appropriate response format. If no response body is included, the response MUST include a Content-Length field with a field-value of "0".

The Max-Forwards request-header field MAY be used to target a specific proxy in the request chain. When a proxy receives an OPTIONS request on an absoluteURI for which request forwarding is permitted, the proxy MUST check for a Max-Forwards field. If the Max-Forwards field-value is zero ("0"), the proxy MUST NOT forward the message; instead, the proxy SHOULD respond with its own communication options. If the Max-Forwards field-value is an integer greater than zero, the proxy MUST decrement(减量;消耗;缩减) the field-value when it forwards the request. If no Max-Forwards field is present in the request, then the forwarded request MUST NOT include a Max-Forwards field.

9.3 GET

The GET method means retrieve(取回;恢复,挽回;) whatever information (in the form of an entity) is identified(确认;辨认;) by the Request-URI. If the Request-URI refers to a data-producing process, it is the produced data which shall(必须;应该;可以;将要) be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.

The semantics of the GET method change to a "conditional(视…而定的;) GET" if the request message includes an If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. A conditional GET method requests that the entity be transferred only under the circumstances(境况;境遇;) described by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network usage by allowing cached entities to be refreshed without requiring multiple requests or transferring data already held by the client.

The semantics of the GET method change to a "partial GET" if the request message includes a Range header field. A partial GET requests that only part of the entity be transferred, as described in section 14.35. The partial GET method is intended to reduce unnecessary network usage by allowing partially-retrieved(部分检索) entities to be completed without transferring data already held by the client.

The response to a GET request is cacheable if and only if it meets the requirements for HTTP caching described in section 13.

See section 15.1.3 for security considerations(考虑) when used for forms.

9.4 HEAD

The HEAD method is identical(同一的;完全同样的,相同的;) to GET except that the server MUST NOT return a message-body in the response. The metainformation(元信息) contained in the HTTP headers in response to a HEAD request SHOULD be identical to the information sent in response to a GET request. This method can be used for obtaining metainformation about the entity implied by the request without transferring the entity-body itself. This method is often used for testing hypertext links for validity, accessibility, and recent modification.

The response to a HEAD request MAY be cacheable in the sense(感到;理解,领会;检测出) that the information contained in the response MAY be used to update a previously cached entity from that resource. If the new field values indicate that the cached entity differs from the current entity (as would be indicated by a change in Content-Length, Content-MD5, ETag or Last-Modified), then the cache MUST treat(对待;处理;款) the cache entry as stale.

9.5 POST

The POST method is used to request that the origin server accept the entity enclosed(封闭的;被附上的;) in the request as a new subordinate(次要的;附属的) of the resource identified by the Request-URI in the Request-Line. POST is designed to allow a uniform method to cover the following functions:

- Annotation(注释) of existing resources;

- Posting a message to a bulletin(公布,公告;) board, newsgroup, mailing list,or similar group of articles;

- Providing a block of data, such as the result of submitting a form, to a data-handling process;

- Extending a database through an append operation.

The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI. The posted entity is subordinate to that URI in the same way that a file is subordinate to a directory containing it, a news article is subordinate to a newsgroup to which it is posted, or a record is subordinate to a database.

The action performed by the POST method might not result in a resource that can be identified by a URI. In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on whether or not the response includes an entity that describes the result.

If a resource has been created on the origin server, the response SHOULD be 201 (Created) and contain an entity which describes the status of the request and refers to the new resource, and a Location header (see section 14.30).

Responses to this method are not cacheable, unless the response includes appropriate Cache-Control or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent to retrieve a cacheable resource.

POST requests MUST obey the message transmission(传送;播送;) requirements set out in section 8.2.

See section 15.1.3 for security considerations.

9.6 PUT

The PUT method requests that the enclosed entity be stored under the supplied Request-URI. If the Request-URI refers(提到) to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing(定居;居住) on the origin server. If the Request-URI does not point to an existing resource, and that URI is capable(能干的;有才能的;有才华的;能胜任的) of being defined as a new resource by the requesting user agent, the origin server can create the resource with that URI. If a new resource is created, the origin server MUST inform(通知;使活跃,使充满;预示) the user agent via the 201 (Created) response. If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to indicate successful completion of the request. If the resource could not be created or modified with the Request-URI, an appropriate(适当的;合适的;) error response SHOULD be given that reflects the nature of the problem. The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not understand or implement(实施,执行;) and MUST return a 501 (Not Implemented) response in such cases.

If the request passes through a cache and the Request-URI identifies one or more currently cached entities, those entries SHOULD be treated as stale. Responses to this method are not cacheable.

The fundamental(基础的,基本的,根本的,重要的,原始的,主要的,十分重大的;) difference between the POST and PUT requests is reflected(考虑;反照;表达) in the different meaning of the Request-URI. The URI in a POST request identifies the resource that will handle the enclosed entity. That resource might be a data-accepting process, a gateway to some other protocol, or a separate entity that accepts annotations. In contrast(对比,对照;), the URI in a PUT request identifies the entity enclosed with the request -- the user agent knows what URI is intended and the server MUST NOT attempt(尝试;试图) to apply the request to some other resource. If the server desires(渴望;希望) that the request be applied to a different URI,it MUST send a 301 (Moved Permanently) response; the user agent MAY then make its own decision regarding whether or not to redirect the request.

A single resource MAY be identified(确认;辨认;认出) by many different URIs. For example, an article might have a URI for identifying "the current version" which is separate from the URI identifying each particular version. In this case, a PUT request on a general URI might result in several other URIs being defined by the origin server.

HTTP/1.1 does not define how a PUT method affects the state of an origin server.

PUT requests MUST obey(服从,听从) the message transmission requirements set out in section 8.2.

Unless otherwise specified for a particular entity-header, the entity-headers in the PUT request SHOULD be applied to the resource created or modified by the PUT.

9.7 DELETE

The DELETE method requests that the origin server delete the resource identified by the Request-URI. This method MAY be overridden by human intervention(介入,干涉,干预;调解,排解) (or other means) on the origin server. The client cannot be guaranteed(有保证的;有人担保的) that the operation(手术;操作,经营;) has been carried out, even if the status code returned from the origin server indicates that the action has been completed successfully. However, the server SHOULD NOT indicate success unless, at the time the response is given, it intends to delete the resource or move it to an inaccessible(达不到的;难见到的;不能接近的;无法理解的) location.

A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 202 (Accepted) if the action has not yet been enacted(制定), or 204 (No Content) if the action has been enacted but the response does not include an entity.

If the request passes through a cache and the Request-URI identifies one or more currently cached entities, those entries SHOULD be treated as stale. Responses to this method are not cacheable.

9.8 TRACE(跟踪,追踪;追溯,探索;探索;查找)

The TRACE method is used to invoke(借助) a remote, application-layer loop-back of the request message. The final recipient of the request SHOULD reflect the message received back to the client as the entity-body of a 200 (OK) response. The final recipient is either the origin server or the first proxy or gateway to receive a Max-Forwards value of zero (0) in the request (see section 14.31). A TRACE request MUST NOT include an entity.

TRACE allows the client to see what is being received at the other end of the request chain and use that data for testing or diagnostic(诊断的,判断的;特征的) information. The value of the Via header field (section 14.45) is of particular interest, since it acts as a trace of the request chain. Use of the Max-Forwards header field allows the client to limit the length of the request chain, which is useful for testing a chain of proxies forwarding messages in an infinite(无限的,无穷的;无数的,许许多多的;极大的) loop.

If the request is valid, the response SHOULD contain the entire request message in the entity-body, with a Content-Type of "message/http". Responses to this method MUST NOT be cached.

9.9 CONNECT

This specification reserves the method name CONNECT for use with a proxy that can dynamically switch to being a tunnel (e.g. SSL tunneling [44]).

一只想要飞得更高的小菜鸟

RFC2616-HTTP1.1-Methods(方法规定部分—单词注释版)相关推荐

  1. RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—单词注释版)

    part of Hypertext Transfer Protocol -- HTTP/1.1RFC 2616 Fielding, et al. 14 Header Field Definitions ...

  2. 侦听器watch及其和计算属性、methods方法的总结

    目录 一.watch侦听器 二.侦听器的处理函数 解决深度监听新老值同源问题 三.侦听器的格式 1. 方法格式的侦听器 2.对象格式的侦听器 四.侦听器watch.计算属性.methods方法的总结 ...

  3. 在vue开发中会遇到methods方法里有一个函数嵌套另一个函数,最内层函数this取不到data数据,该怎么解决?

    一,问题 在vue的methods方法中两个函数互相嵌套,最内层函数this取不到data数据 二,原因 this的指向问题 三,解决方法 (1)给最外层函数this重新赋值给一个变量 methods ...

  4. 解决vue中无法取得methods方法中的return值

    解决vue中无法取得methods方法中的return值 参考文章: (1)解决vue中无法取得methods方法中的return值 (2)https://www.cnblogs.com/betty- ...

  5. Vue中的methods方法

    在 methods 中定义方法 我们可以使用 methods 属性给 Vue 定义方法,methods 的基本语法: var vm = new Vue({methods:{// 在此时定义方法,方法之 ...

  6. Vue中的methods方法使用技巧,三分钟迅速读懂

    1.methods方法应用场景: 在Vue中,我们需要调用某个方法时,我们需要先将这些方法定义在methods属性中,然后才能在vue 表达式中调用该方法. 2.methods方法的使用方法 语法定义 ...

  7. Vue入门 methods方法

    methods方法:为什么加s,因为可以定义多个方法 methods选项表示:当前Vue实例可以用到的方法 methods选项的值:对象,对象中定义方法 methods{ //定义时间处理方法show ...

  8. python英语单词 扇贝英语安卓下载_扇贝单词app下载-扇贝单词英语版 安卓版v3.6.503-pc6手机下载...

    扇贝单词app是一款可以和小伙伴一起学英语背单词的app,扇贝单词英语版属于千万用户的背单词神器,让你的英语水平突飞猛进,你确定不要来试一试吗? 软件介绍 扇贝单词英语版是一款很实用的英语单词学习软件 ...

  9. python英语单词 扇贝英语安卓下载_扇贝单词英语版

    扇贝单词英语版是一款很实用的英语单词学习软件,扇贝单词英语版的主要功能是为用户提供效率更高的方法去记单词.学习英语.如果你不想一个人枯燥地学习,那么扇贝单词的英语社区欢迎你,每天都有几十万用户共同学习 ...

最新文章

  1. tensorflow 入门经典实例
  2. 学习笔记Hive(一)—— Hive简介
  3. 常见的算法排序(2)
  4. 串口通信的基本原理----STM32
  5. SQL 子查询怎么优化?写的很深!
  6. 车机没有carlife可以自己下载吗_雷克萨斯NX 原车carlife转换无线carplay
  7. SpringBoot巧用静态内部类优雅地接收参数
  8. urllib爬虫封装(可设置代理,记录日志)方法
  9. UC手机浏览器本地m3u8流媒体缓存碎片批量合并为视频
  10. 在Window10子系统Ubantu创建conda环境
  11. STFT filter bank
  12. div框阴影外发光效果
  13. 欧姆定理验证,电阻的电压/电流/功率,电阻串联,电阻并联,电阻分压
  14. 扫地机器人常见的5种定位技术解析
  15. mos管结电容等效模型_详解各元器件等效电路_电阻、电容、电感、二极管、MOS管...
  16. SpringBoot之:SpringBoot的HATEOAS基础
  17. 按键修改阈值功能、报警功能、空气质量功能实现(STM32)
  18. mybatis-plus代码生成器,一键生成代码
  19. Eclipse 21 款插件介绍
  20. 百度钱包杀入移动支付:BAT重新排位

热门文章

  1. 内存分析_Redis内存爆炸增长?你需要知道这一套Redis内存分析方法
  2. html a标签有value,html里面a标签里有value吗?
  3. usb3.0驱动linux,dwc3 linux usb3.0 driver架构
  4. easyexcel和poi是否有版本冲突_easyexcel--解决poi大文件发生OOM问题
  5. java 字符串池 原理_《Java虚拟机原理图解》1.2.2、Class文件中的常量池详解(上)...
  6. 文本编辑软件哪个好_过年倒计时软件哪个好 过年倒计时软件推荐
  7. 修改oracle 安裝參數,oracle 安裝相關參數設定
  8. 停止运行_锅炉停止运行应注意哪些事项?
  9. 初学iBATIS的朋友,如果你不看我这篇文章,你一定后悔,因为它官方文档里面的示例少一个
  10. success.ftlh与error.ftlh