WebAPI 获取在控制器处被 UrlDecoded 的请求参数
WebAPI get request parameters being UrlDecoded at the controller
我在向 WebAPI 控制器发出 GET
时遇到问题,本质上是:
$.getJSON('/api/feefo/getproductfeedback?id='+ encodeURIComponent(skuNum))
我正在使用 encodeURIComponent
来 url 编码 skuNum
参数,在开发工具中查看请求,我得到了 skuNum
的预期结果,需要被编码:
skuNum
已按预期从 1000EF+
变为 1000EF%2B
。
但是,当我在 WebAPI 控制器中查看 id
参数时,它是通过未编码的:
好像客户端 url 编码被以某种方式取消了,谁能解释一下这是怎么回事?显然我可以通过在控制器中进行编码来解决这个问题,但我想了解为什么会这样。
这是设计使然。默认情况下,API 框架将解码 URL 编码的参数。编码应该只用于传输数据。一旦在服务器上,开发人员就不必处理必须对其进行解码的问题(横切问题)。按预期使用该值。
我在向 WebAPI 控制器发出 GET
时遇到问题,本质上是:
$.getJSON('/api/feefo/getproductfeedback?id='+ encodeURIComponent(skuNum))
我正在使用 encodeURIComponent
来 url 编码 skuNum
参数,在开发工具中查看请求,我得到了 skuNum
的预期结果,需要被编码:
skuNum
已按预期从 1000EF+
变为 1000EF%2B
。
但是,当我在 WebAPI 控制器中查看 id
参数时,它是通过未编码的:
好像客户端 url 编码被以某种方式取消了,谁能解释一下这是怎么回事?显然我可以通过在控制器中进行编码来解决这个问题,但我想了解为什么会这样。
这是设计使然。默认情况下,API 框架将解码 URL 编码的参数。编码应该只用于传输数据。一旦在服务器上,开发人员就不必处理必须对其进行解码的问题(横切问题)。按预期使用该值。