2013-06-15 4 views
3

내가 이렇게 보이는 행동이 : 사용자가 올바른 URL에 POST를 수행하는 경우웹 API : 확인 필수 조치 매개 변수

[HttpPost] 
public HttpResponseMessage PostInstantiation(Guid id, [FromBody]Instantiation instantiation) 

을하지만 (/ 빈) 몸, 다음 모델의 검증은 '아무튼 t 실패하고 인스턴스화 인수가 널입니다. 나는 그것이 실패 할 것으로 예상했다.

이 시나리오를 올바르게 처리하는 방법은 무엇입니까?

답변

1

네, 맞습니다 ... 당신이 주목하는 것은 예상되는 행동입니다. 사용자가 실제로 빈 본문을 보냈는지 확인하려면 수신 요청의 헤더 인 Content-Length을 확인할 수 있습니다.

if(Request.Content.Headers.ContentLength == 0)

+0

또는, 나는 다만 수 : (인스턴스 == null이)가 새로운 경우 ArgumentNullException을 던져(); [FromBody] 외에도 적용 할 수있는 속성이 필요하여 이것이 필수 매개 변수 였음을 나타 내기를 희망했습니다. 안타깝게도 [Required] 속성은이 경우를 수행하지 않습니다. –

+1

'if (instantation == null)'과 같은 문제는 클라이언트에서 Web API의 Json 및 Xml 포맷터를 사용한다고 가정 해 봅시다. 이러한 포맷터는 Json 포맷터의 경우 'null'을 직렬화하며 해당 Xml 포맷터는 자체 표현을 갖습니다. 즉, 본문에는 값이 있습니다. 따라서 몸이 실제로 있는지 없는지 알아 내야합니다. –