Обратите внимание, что мой вопрос аналогичен this question, но поскольку я не могу понять, как добавить комментарий к принятому ответу с просьбой о разъяснении, мне нужно создать новый вопрос.Rest service messing up strings with double quotes
У меня есть служба отдыха, похожее на это:
namespace My.API
{
[Route("/event/{Id}", Verbs = "POST")]
public class EventRequest
{
public int Id { get; set; }
public string Content { get; set; }
}
public class EventService : Service
{
public object Post(EventRequest request)
{
// Do something with request.Content
}
}
}
Когда я сделать запрос на запись со следующими данными формы:
Content=%22this+is+a+%22+test
request.Content содержит
this is a " tes
Обратите внимание, что первая двойная кавычка отсутствует, а t в конце теста отсутствует.
Теперь принятый ответ в другом связанном выше вопросе говорит, что нам нужно кодировать строку, но мне интересно, есть ли способ изменить поведение. Я пытаюсь создать публичный api, и если клиенты api должны кодировать строку определенным образом, я думаю, что это вызовет ошибки. Они должны просто обеспечить нормальную строку.
В основном, следующее JQuery Ajax вызов должен работать:
$.ajax({
url: "api/event/" + id,
type: "POST",
data: {Content : content}
});
Где содержание сырой/неперекодированной строка, которая JQuery будет выполнять кодирование формы URL-адрес на перед прохождением службы. Служба должна просто вернуть исходную исходную строку.
Я также разместил эту проблему на [github] (https://github.com/ServiceStack/ServiceStack/issues/703) – niltz