ServiceStack으로 만든 서비스가 있습니다. 최근에 ServiceStack 라이브러리를 업데이트했으며 JSON 응답 대신 JSV 응답을 받고 있습니다.JSON 대신 JSV를 반환하는 ServiceStack
요청은 같은 같습니다
POST http://localhost/api/rest/poll/create?format=json&PollFormat=1 HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Length: 160
Accept: */*
Origin: http://localhost
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
DNT: 1
Referer: http://localhost
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie:
Question=this+is+a+test&Answers=yes%2Cno&
을 그리고 응답은 같은 같습니다 조금을 더 쉽게하기 위해 나는 응답 JSV을 손질 한
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ServiceStack/3.956 Win32NT/.NET
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 12 Aug 2013 21:20:33 GMT
Content-Length: 437
{Id:1,Question:this is a test,Answers:[{Id:1,Text:yes,Votes:0},{Id:2,Text:no,Votes:0}],IsOpen:1,TotalVotes:0}}
주 읽기 때문에 Content-Length는 예제에 맞지 않습니다.
내가 이해에서, ServiceStack의 기본 ContentType이 내가 응용 프로그램/JSON의 ContentType이와 함께 다시 JSV을 얻고 왜 JSON
해야 하는가?
편집 :
여기public class PollService : Service
{
public object Post(PollRequest request)
{
//
// do work required to create new poll
//
Poll p = new Poll();
if(request.PollFormat.HasValue)
{
return JsonSerializer.DeserializeFromString<object>(p.JSON);
}
else
{
return PostConvertor.ConvertTo(p);
}
}
}
내 설문 조사 응답이 모습입니다 :
여기[Route("/poll/create", Verbs = "POST")]
public class PollRequest : IReturn<Object>
{
public string Question { get; set; }
public string Answers { get; set; }
public int? PollFormat { get; set; }
}
내 서비스가 모습입니다 :
여기이처럼 내 요청 DTO는 모습입니다 :
public class Poll
{
public int Id { get; set; }
public string Question { get; set; }
public Collection<Answer> Answers { get; set; }
public int IsOpen { get; set; }
public int TotalVotes { get; set; }
public class Answer
{
public int Id { get; set; }
public string Text { get; set; }
public int Votes { get; set; }
}
}
사용중인 ServiceStack 버전은 무엇입니까? 어떤 버전으로 업그레이드 했습니까? –
우리는 2.0.9를 사용했고 3.9.56.0 (NuGet의 최신 최신 버전)으로 업그레이드했습니다. – niltz
또한 JQuery 호출을 변경하여 "json"이라는 데이터 유형을 제공하여 다음 요청 헤더를 강제 적용하려고 시도했습니다. 'Accept : application/json, text/javascript, */*; q = 0.01 ''을 보낼 수는 있지만 도움이되지 않습니다. – niltz