2017-02-16 10 views
2

(404)를 반환하지만 라우팅 속성에 새로운 오전, 나는 다른 모든 을 수행하는 동안이 작동하지 않는 이유를 아무 생각이속성 라우팅

[RoutePrefix("api/statistics")] 
public class StatisticsController : ApiController 

그리고 내가 가진

[HttpGet] 
    [Route("categoryTagsByTotalIssues/{categoryId:int}")] 
    public IHttpActionResult CategoryTagsByTotalIssues(int cateogryId) 
우편 배달부에서 호출 할 때 https://localhost:44363/api/statistics/categoryTagsByTotalIssues/3 하지만 https://localhost:44363/api/statistics/getTopFiveCategories 을 할 경우 솜입니다 반환

코드 의미가 있습니다

[HttpGet] 
    [Route("getTopFiveCategories")] 
    public IHttpActionResult GetTopFiveCategories() 

이 같은 ething, 나는 다른 하나는 누군가가 나에게 이것을 설명 할 수없는 이유를 몰라?

+0

경로 템플릿의 'categoryId'와 'paramaters'의 'cateogryId'사이에 오타가있는 것처럼 보입니다 – Nkosi

답변

1

사용 사미르의 대답이 public IHttpActionResult CategoryTagsByTotalIssues(int categoryId)

+0

아약스 전화가 아니기 때문에 여전히 404가 반환됩니다. 우편 배달부에서 시험 중이십니까? – Harry

+0

@AvalothOath 데이터베이스에 카테고리 ID 3이 있는지 또는 사용중인 메모리 데이터 구조가 무엇입니까? – Sameer

+0

네, 그렇습니다. 그리고 모든 프로젝트가 순조롭게 진행되는 simmilar 루트를 가지고 있습니다. 그래서 왜 이런 생각이 들지는 모르겠군요; – Harry

2

코멘트가 제대로 Catoegory 대 범주와 오타로 문제를 식별 [Route("categoryTagsByTotalIssues")] 그리고 파라미터 업데이트에서이. 앞서 보았 듯이 메소드 서명의 매개 변수 이름과 경로의 매개 변수 이름이 정확히 일치해야합니다.

매개 변수 바인딩과 관련하여이 부분을 조금 더 확장하고 싶습니다. 카테고리 ID가 단순한 유형 인 int이므로 [FromUri]는 필요하지 않습니다. 어떤 종류의 복잡한 객체가 전달되었다고 가정 해 봅시다. POST는 몸체가 아닌 URL에서 들어오고 싶다고 가정 해 봅시다. 이 시나리오에서는 WebAPI2가 달리 지정하지 않는 한 복잡한 유형이 본문에서 비롯된 것으로 가정하므로 [FromUri] 매개 변수를 명시 적으로 꾸며야합니다.

이 반대의 경우도 마찬가지입니다. int와 같이 간단한 POST 작업을한다고 가정 해 봅시다. URL이 아닌 본문에 있습니다. [FromBody] 매개 변수를 지정하여 WebAPI2가 POST 본문에서 값을 가져오고 그렇지 않으면 URL에서 가져 오지 않도록 지정해야합니다. 그렇지 않으면 기본값으로 사용됩니다.

+0

감사합니다 thats 유용한 정보! – Harry