2013-10-16 3 views
4

WebAPIConfigWebAPI 라우팅 테이블

config.Routes.MapHttpRoute(
    name: "TestApi", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

내 APIController : 나는 PARAM "ID"의NAME을 변경 때까지

public class TestController : ApiController 
{ 
    [HttpPost] 
    public string Send([FromBody] string id) 
    { 
     return "Got " + id; 
    } 
} 

이 모두의 말을 수 있도록 잘 작동 "입력 "내 API 절차에.

내가 라우팅 테이블 URL에 {XX} 괄호를 배치하여, 우리가 정말 어떤 1 PARAM가 요청하는 전화에서 사용됩니다한다는되었다는 인상했다
MY (잘못) 가정.

내 작은 샘플을 보면이 사실이 아닌 것 같습니다.

질문 1 :
이 내가 표준 기본값/후/풋 얻을 대신 (등록, 로그인, 로그 아웃, sendemail ...처럼) 10 개 API의 방법이있는 경우/삭제하는 것이 의미 하는가 .. ..i는 각각에 대해 10 개의 개별 라우팅 항목이 필요합니까?

질문 2 : 또한 우리는 라우팅 테이블에 POCO 필드의 클래스를 기대하는 API를 나타냅니다 어떻게
? MapHttpRoute에 각 개인과 별도의 필드 이름을 명시합니까? 당신이 input에 액션 메소드의 id 매개 변수의 이름을 변경하는 경우

+0

질문 1의 경우 : aliasing ex :'([FromUri (Name = "id")] 문자열 입력)'... 그래서 당신은 여전히'TestApi' 경로를 그대로 유지할 수 있습니다. –

+0

@KiranChalla는 라우팅이나 컨트롤러에있는 것입니까? –

답변

2

,이 작업에 대한 모든 호출은 input라는 이름의 매개 변수를 전달하는 (하지 id!) 요청 본문 내에서해야합니다.

매개 변수 바인딩은 일치하는 이름을 기반으로하므로 호출하는 클라이언트를 업데이트하지 않고도 본문 매개 변수의 이름을 바꿀 수 없습니다 (가능한 경우). 경로 정의와 해당 조치 메소드의 매개 변수를 모두 업데이트 할 때 경로 매개 변수 자리 표시 자의 이름을 바꿀 수 있습니다.

관련 문제