2016-06-13 3 views
1

저는 경험이 풍부한 프로그래머이지만 WebApi는 처음입니다 (우리는 MS asp.net MVC 프레임 워크를 사용하고 있습니다). 나는 표준이 이미이 정보를 가지고있는 HttpResponseMessage 개체를 반환 요구 것을보고HttpResponseMessage 클라이언트 측을 보는 방법은 무엇입니까?

{ 
    success: [boolean], 
    errorLog: [error message, if failed], 
    referer: [api call details], 
    payload: { 
    // results, if success 
} 

:

고객

모든 반환 값이 종류의 객체에 싸여 할 것을 요청했다. 내가 할 때, 복제보다는, 그냥. 내가 클라이언트 측에서이 객체를 사용하는 방법을 볼 수 없습니다, 그러나, 예를 들어

return Ok(object); 

을 직접 (중 이러한 유형의 객체를 반환하거나 IHttpActionResult를 통해 브라우저에서 API 호출, 내가 보는 모두는 (심지어 디버거를 사용) 내용이다 내가 오류를 반환 할 때, 나는 다음을 참조하십시오.

<Error> 
    <Message>foo bar</Message> 
</Error> 

그러나 다른 정보의 흔적 (상태 코드, ReasonPhrase 등) .Json 형식을 반환하는 경우에도 마찬가지입니다.

이 객체는 다소 박탈되어 있습니까? 라인을 따라, 그리고 만약 그렇다면 누구? 이 객체가 API 호출자에게 도착하도록 허용하여 관련 필드를 모두 사용할 수있게하려면 어떻게해야합니까?

감사

편집

는 : 주석의 요청에 따라 그것을 훨씬이 아니지만, 나는 내 서버 측 코드를 게시하도록하겠습니다.

public HttpResponseMessage Get() { 
      HttpResponseMessage response = Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "foo bar"); 
      response.ReasonPhrase = "There is no reason."; 
      return response; 
     } 

이 위에 게시 된 XML 결과 코드입니다 다음 HttpResponseMessage 객체를보고에서 내 시도는이 컨트롤러를 만드는 것이 었습니다. 당신이 HttpResponseMessage을 만들 IHttpActionResult ExecuteAync에 대한 호출을 반환 할 때

+0

경우 안, 당신은 게시 할 수 있습니다 같은 대답이

public class Payload { } public class CustomResponse { public IList<bool> Success { get; set; } public IList<string> ErrorLog { get; set; } public IList<string> Referer { get; set; } public Payload Payload { get; set; } } 

같은 POCO를 작성하고 전송하는 것입니다 서버 사이드 코드? –

답변

0

Is this object 'stripped' somewhere along the line, and if so by who? 이 객체는 후드 아래 HttpResponseMessage에 의해 제거됩니다. 그래서 모든 필드를 보려면 원시 모드에서 피들러 또는 크롬 용 HttpHeader과 같은 확장 프로그램을 사용해야합니다. 예상 답을 보낼 수 How can I allow this object to arrive to the api caller so s/he can use all the associated fields
한 가지 방법은이

return OK(new CustomObject(){Payload=yourObject}); 
+0

답변 해 주셔서 감사합니다. 그것을 구현하려고 할 때이 문제가 발생했습니다 : http://stackoverflow.com/questions/37862939/error-with-webapi-serialization – Pete

+0

newtonsoft json serializer를 사용하고 있습니까? –

관련 문제