2016-09-29 2 views
1

두 가지 API 엔드 포인트가 있습니다. 두 컨트롤러 모두 ApiController을 상속합니다. 두 객체 모두 단일 객체를 반환하며 각 객체는 DateTime 유형의 필드를 갖습니다.왜 동일한 API의 다른 종단점이 다른 날짜 형식을 반환합니까?

API 1

public class ReadingProgressResponse 
{ 
    public DateTime DateTime { get; set; } 
    // and other properties 
} 

샘플 응답 :

{ 
    "dateTime": "2016-09-28T14:30:26" 
} 

API 2

Response1 같이 정의된다

[Route("OtherThings/{otherThingId:guid}/FirstThing", Name = "GetFirstThing")] 
[HttpGet] 
[ResponseType(typeof(Response1))] 
public IHttpActionResult GetFirstThing(Guid otherThingId, [FromUri] DateTime? modifiedDate = null) 
{ 
    var things = GetThings(otherThingId, modifiedDate); 
    if (!things.Any()) 
    { 
     return NotFound(); 
    } 

    return Ok(new Response1(things.First())); 
} 

Response2는 다음과 같이 정의된다

[HttpGet] 
[Route("{someId:guid}", Name = "SomeName")] 
[ResponseType(typeof (Response2))] 
public IHttpActionResult GetResponse2(Guid someId) 
{ 
    var data = GetSomeData(someId); 

    return Ok(new Response2(data)); 
} 

:

public class ScreenSessionResponse 
{ 
    public DateTime ExpirationTime { get; set; } 
    // and other fields 
} 

샘플 응답 : API 1 일의 끝에 "Z"를 가지고 있지만, API이되지 않습니다

{ 
    "expirationTime": "2016-09-28T14:48:09Z" 
} 

공지 사항

않습니다.

왜? 응답의 형식을 어떻게 제어 할 수 있습니까?

답변

1

예, 날짜 형식을 제어 할 수 있습니다. 더 많은 정보를 들어

// Convert all dates to UTC 
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc; 

살펴 here

에게 있습니다

당신의 Global.asax의 ONSTART 방법이 코드를 사용해보십시오

관련 문제