当前位置: 首页 > 面试题库 >

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

松雅昶
2023-03-14
问题内容

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

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

.NET HttpWebRequestWebRequest类中也存在类似的行为。

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

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

你有好主意吗?


问题答案:

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

HTTP / 1.1 的一组 常用 方法在下面定义。虽然 此设置可以扩展

也就是说,HTTP中的方法可以是任何东西。有“众所周知的”或通用方法,它们的语义很容易理解(很好, 应该 很好理解-我仍然遇到在GET /
POST上不清楚的人)。

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

由于这些原因,枚举将是不合适的,因为总会有不适合该枚举的“其他”值。

RFC 2616的更多引号:

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

和,

方法令牌指示要在由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


 类似资料:
  • 我使用的是Laravel,并有一个查询,它使用列的进行选择: 我已经安装了mysqldn,AFAIK Laravel使用。 但是是一个字符串,不管列是什么类型。(它是一个整数列) 另外,如果我这样做: < code>foo_bar以整数形式返回。

  • 问题内容: 我有一个$ .ajax()请求,其dataType设置为“ json”。服务器返回的JSON具有正确的mime类型“ application / json”。但是,我的jqXHR对象中的responseText始终是字符串。我究竟做错了什么?这是应该如何工作的吗? 这是我拨打电话的方式: 所以我必须做一个才能得到一个实际的对象。这似乎没有必要,因为$ .ajax()应该根据文档自动转换

  • 我的应用程序在本地主机上运行得非常好,但一旦我部署到Heroku,我就遇到了以下错误: 当我在客户端使用console.log(response.data)时,我收到了这个字符串,而不是带有我的用户信息的res.json: "

  • 其实说到字符串,这个概念没有具体的说法,但是我们根据平时的归纳总结,也能一段,便于大家理解,字符串就是把字符连在一直,串成一串又一串;字符串内可以包含数字、字母、特殊符号等所有内容;在Python中只要对一些内容加上对双引号或一对单引号,就默认为是字符串;(三对单引号或三对双引号可以写多行字符串)。 字符串的关键是str,是string的缩写。 一、什么是字符串? 解释:对于"Holl world

  • 问题内容: 我正在尝试读取(位于Javascript源的同一文件夹中)的内容,并使用以下代码显示它: 的内容创建于: 测试Node.js readFile() 我得到这个: 问题答案: 从文档: 如果未指定编码,则返回原始缓冲区。 这可能解释了。指定一个有效的编码,例如作为文件名之后的第二个参数。如,

  • 问题内容: 样本数据: 我使用以下查询将’ ‘’分隔的字符串分成几行: 我的查询存在问题,我不想为每个拆分的电子邮件地址创建新行-我想为其添加新列。 email_address列中最多有3个单独的电子邮件地址。有什么建议?如果它的大小超过3,最好是答案可以占n列。 问题答案: 测试数据 询问 结果