2016-10-17 2 views
2

У меня есть проблема, когда я выдающее GET к контроллеру WebAPI, по существу:WebAPI получить параметры запроса быть UrlDecoded на контроллере

$.getJSON('/api/feefo/getproductfeedback?id='+ encodeURIComponent(skuNum)) 

Я использую encodeURIComponent по адр закодировать параметр skuNum, просмотр запрос в Дев инструментов, которые я получить ожидаемый результат для skuNum, который должен быть закодирован:

enter image description here

skuNum пошел от 1000EF+ до 1000EF%2B как и ожидалось.

Однако при просмотре параметра id в контроллере WebAPI, он идет через ООН-закодировано:

enter image description here

Это как будто кодирование на стороне клиента URL в настоящее время уничтоженного какое-то образом, может кто-нибудь объяснить, что здесь? Очевидно, я могу обойти это, просто сделав кодирование в контроллере, но я хотел бы понять, почему это происходит.

+0

Это по дизайну. Интерфейс API будет декодировать URL-кодированные параметры по умолчанию. кодирование должно использоваться только для транспортировки данных. один раз на сервере разработчик не должен иметь дело с необходимостью его декодирования (перекрестная озабоченность). Используйте значение по назначению. – Nkosi

+0

@Nkosi Спасибо, имеет смысл, я думаю. Не стесняйтесь добавлять это в качестве ответа, это может помочь другим. – DGibbs

ответ

1

Это по дизайну. Интерфейс API будет декодировать URL-кодированные параметры по умолчанию. кодирование должно использоваться только для транспортировки данных. один раз на сервере разработчик не должен иметь дело с необходимостью его декодирования (перекрестная озабоченность). Используйте значение по назначению.