2013-06-25 4 views
1

ASP.NET MVC에서 처음으로 약간의 프로젝트를하고 있습니다. 내가 수행하는 REST API를 만들도록 요청했습니다 다음 숙박 내가 만드는 방법을 알아 냈어요 ID를 asp.net mvc에서 요청 본문을 사용하는 방법

입니다 :

  • 는 "/json/party/:accomodation/join"어디가 POST 요청을 수락 API는 : accomodation 매개 변수의 구문 분석을 처리합니다. 요청 본문을 읽는 방법을 파악할 수 없습니다. 예를 들어, 내 API 소비자는 이제 다음과 같은 요청 본문에이 URL에 게시 할 :

    { "user": 
        { 
         "name": "Hans van Dam", 
         "email": "[email protected]", 
         "straat": "Test street", 
         "nummer": "10", 
         "woonplaats": "Amsterdam", 
         "telefoon": "0687217612", 
         "newsletter": true 
        }, 
        "party": { 
         "rsvp": 1 
         "time": 1370941687 
        } 
    } 
    

    이 지금은이 요청 본문을 읽고, 오브젝트에 다시 구문 분석 할 필요가있다. ASP.NET MVC에서 어떻게하면됩니까?

+0

당신이 업데이트를 확인 했습니까? –

+0

@PKKG가 업데이트 되나요? – Gidogeek

답변

3

MVC와 웹 API는 요청을 구문 분석하고 컨트롤러에서 호출 된 동작 메서드에 매개 변수를 제공하기 위해 "모델 바인딩"을 사용합니다. 요청 본문을 수락하려면 예상 한 JSON을 모델링하고이를 작업 메소드의 매개 변수로 사용해야합니다. 컨트롤러에서

다음
public class User 
{ 
    public string Name { get; set; } 
    // etc 
} 

public class Party 
{ 
    public bool Rsvp { get; set; } 
    // etc 
} 

public class JoinRequest 
{ 
    public User User { get; set; } 
    public Party Party { get; set; } 
} 

:

public HttpResponseMessage MyApiEndpoint(string accommodation, JoinRequest joinRequest) 
{ 
    // use joinRequest, i.e. 
    // joinRequest.User.Name 
} 
+0

고마워요. 이 경로를 수정해야합니까? 기본적으로 포함되는 모델 바인더입니까? 또는 일부 구성을 변경해야합니까? – Gidogeek

+0

아무 것도 변경할 필요가 없습니다. modelbinder는 URL, 요청 본문, 게시물 본문 등을 검색하여 가능한 모든 매개 변수를 채 웁니다. –

+0

Chris Pratt에게 감사드립니다. 나는 그것을 작동 시켰습니다. 그러나 API 컨트롤러의 하위 클래스에서는 작동하지 않는 것 같습니다. 그것은 정상적인 컨트롤러의 하위 클래스와 함께 작동했습니다. 왜 그런지 모르겠습니다. 그걸로 일할 수 있습니까? – Gidogeek

관련 문제