为什么HttpRequest.HttpMethod是字符串而不是Enum?

Ahm*_*gle 24 .net java language-design

在.NET Framework 的参考中HttpRequest.HttpMethod,请求类型使用System.Stringtype 声明.

RFC 2616中,声明了所有HTTP请求方法(例如POST,GET,PUT,DELETE ......).

还有类似的行为HttpWebRequestWebRequest.NET类.

Java在方法上有类似的HttpURLConnection#setRequestMethod(String)方法.

为什么这些语言设计者不考虑为这些HTTP方法实现枚举?

你有好主意吗?

Dam*_*ver 35

您的RFC 2616链接的第一句话(重点已添加):

HTTP/1.1 的常用方法集定义如下.虽然这套可以扩大 ......

也就是说,HTTP中的方法可以是任何东西.有"众所周知的"或常用的方法,其语义已被很好地理解(好吧,好的,应该很好理解 - 我仍然遇到人们对GET/POST不清楚).

但任何应用程序都可以实现其他方法 希望在客户端和服务器应用程序之间很好地理解其他方法的语义.

由于这些原因,枚举是不合适的,因为总有"其他"值不适合该枚举.


来自RFC 2616的更多引用:

实用信息系统需要比简单检索更多的功能,包括搜索,前端更新和注释.HTTP允许一组开放式的方法和标头来指示请求的目的

和,

Method标记指示要对Request-URI标识的资源执行的方法.该方法区分大小写.

   Method         = "OPTIONS"                ; Section 9.2
                  | "GET"                    ; Section 9.3
                  | "HEAD"                   ; Section 9.4
                  | "POST"                   ; Section 9.5
                  | "PUT"                    ; Section 9.6
                  | "DELETE"                 ; Section 9.7
                  | "TRACE"                  ; Section 9.8
                  | "CONNECT"                ; Section 9.9
                  | extension-method
   extension-method = token
Run Code Online (Sandbox Code Playgroud)