2017-02-13 8 views
2

내가이 작업을 얻으려고 :Route 속성을 사용하여 쿼리 문자열을 웹 API와 바인딩하는 방법은 무엇입니까?

[Route("api/Default")] 
public class DefaultController : ApiController 
{ 
    [HttpGet, Route("{name}")] 
    public string Get(string name) 
    { 
     return $"Hello " + name; 
    } 
} 

을이 http://localhost:55539/api/Default?name=rami를 호출하지만 작동하지 않습니다에 의해, 또한이 시도 : http://localhost:55539/api/Default/Hello?name=rami를, 또한 작업이 없습니다 : 웹 API 첫번째 경로 템플릿 매칭에 http://localhost:55539/api/Default/Hello/rami

답변

5

확인 속성 라우팅 WebApiConfig.cs에서 사용 가능

config.MapHttpAttributeroutes(); 

ApiController 확인 작업에는 여러 경로가 할당 될 수 있습니다.

[RoutePrefix("api/Default")] 
public class DefaultController : ApiController { 

    [HttpGet] 
    //GET api/Default 
    //GET api/Default?name=John%20Doe 
    [Route("")] 
    //GET api/Default/John%20Doe 
    [Route("{name}")] 
    public string Get(string name) { 
     return $"Hello " + name; 
    } 
} 

는 다음이 이루어집니다 어떻게 인라인 매개 변수 밖으로 URL을 호출하고 라우팅 테이블과 유사한 쿼리 문자열을 사용하게 할 수 있도록 옵션 매개 변수 만들기의 옵션도있다 규칙 기반 라우팅.

[RoutePrefix("api/Default")] 
public class DefaultController : ApiController { 

    [HttpGet] 
    //GET api/Default 
    //GET api/Default?name=John%20Doe 
    //GET api/Default/John%20Doe 
    [Route("{name?}")] 
    public string Get(string name = null) { 
     return $"Hello " + name; 
    } 
} 
1

그런 다음 액션 선택 프로세스가 발생합니다.

귀하의 C 번호는 다음과 같이해야한다 : 이제

public class DefaultController : ApiController 
{ 
    [HttpGet] 
    [Route("api/Default/{name}")] 
    public string Get(string name) 
    { 
     return $"Hello " + name; 
    } 
} 

다음과 같이해야한다 전화 :

http://localhost:55539/api/Default/Get?name=rami 
관련 문제