2015-02-02 2 views
2

새로운 API를 구현하려고하지만 PHP의 일반적인 경로를 사용하지 않고 C#을 선택했습니다.ASP.NET WebAPI - [FromBody]와의 문제

'MVC 4 API'예제로 약간의 플레이를했지만 지금까지는 요청이 작동하지 않는 것 같습니다.

나는 '가치'와라는 컨트롤러를 만든 다음 방법이 있습니다

[HttpPost] 
public void Post([FromBody]string value) 
{ 
    string body = value; 
} 

피들러는 상기를 통해 나는 다음 POST 요청을 보낸을 API :

User-Agent: Fiddler 
Host: localhost:56501 
Content-Length: 10 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 

value=test 

후 이 메서드를 실행하면 메서드가 호출되는 것처럼 보이지만 본문을 통해 'value'를 가져 오려고 시도 할 때 해당 값을 가져 오지 않고 대신 null을 제공합니다.

+0

Request.Form에서 디버거를 사용해 볼 수 있습니까? 나를 위해 그것은 보통 내가 뭘 잘못하고 있는지 보는데 도움이된다 :'var x = Request.Form;', 그/다음 줄의 중단 점, 그 위에 마우스를 올려 놓고 객체를 통해 클릭하면 무엇이 있는지 볼 수있다 :) – Gerino

답변

2

나는 그것이 Content-Type: application/x-www-form-urlencoded 작동 할 수없는 것, 그러나 이것은 그 사이에 작동합니다 :)

User-Agent: Fiddler 
Host: localhost:56501 
Content-Length: 6 
Content-Type: application/json; charset=UTF-8 

"test" 

그래서 난 당신이해야 할 경우 다음 application/x-www-form-urlencoded 작업 것을 알아 냈다 당신만을 요청 본문으로 =value을 전달해야합니다. 확실히 이상하지만 이건 MVA가 아니라 WebApi 인 것 같아서 어쨌든 application/x-www-form-urlencoded을 넘겨서는 안됩니다.)

+0

This 그래,하지만 이상적으로 나는 그것을 지명하고 싶다. 그 덕분에, 나중에 편리하게 쓸 수 있습니다 :-) – alexc95

+1

정말로 원하는 이름을 원한다면 하나의 속성으로 viewModel을 만들고'[FromBody]'속성을 제거하십시오 –

+0

나는 양식으로 인코딩 된 게시물이 아니라 JSON 개체를 사용할 충분한 정보를 제공해 주셨습니다. 고마워! – alexc95