2012-05-22 3 views
10

OData를 사용하여 웹 API 호출에서 반환 된 항목의 긴 목록을 매김합니다. 시작 및 끝 인덱스가있는 URL을 통해 데이터를 필터링 할 수 있습니다.

내가 가진 질문은 총 항목 수를 어떻게 알 수 있습니까? 따라서 웹 API를 호출하는 휴대 기기에 3 페이지 중 1 페이지 (20 개 항목)를 표시 할 수 있습니다.

+0

사용자가 페이지를 읽는 동안 항목의 총 개수가 변경 될 수 있습니다. 예를 들어, 목록의 "항목"이 SO 질문에 대한 답변 인 경우 사용자가 목록의 끝에 도달하기 전에 번호가 20에서 30으로 증가 할 수 있습니다. 이로 인해 총 페이지 수가 다소 불확실합니다. – Peter

답변

3

쿼리에서 $ inlinecount = allpages를 사용하여 결과의 ​​모든 항목 수를 상단 및 건너 뛰기없이 가져올 수 있습니다. ? 예를 들면 :

http://services.odata.org/OData/OData.svc/Products $ 가기 = 1 &은 = 1 & $ inlinecount = 목록 allpages

이 하나의 제품뿐만 아니라 9 인라인 수를 반환 건너 뛰기 (이후 9 개 제품은 엔티티 집합에있다).

+1

고맙지 만 다음과 같은 링크가 발견되었습니다. 상태가 지원되지 않는 상태이므로 -> http://thedevstop.wordpress.com/2012/04/05/adding-odata-inline-count-support-to-the- asp-net-web-api/ – amateur

+1

Microsoft.AspNet.WebApi.OData 버전 0.1.0-alpha-120815를 사용하여이를 시도하면 400 - { "Message": "쿼리 매개 변수 '$ inlinecount'는 지원되지 않습니다."} –

+1

$ inlinecount는 더 이상 사용되지 않습니다. 내 대답은 여기를 참조하십시오 : http : // stackoverflow.com/a/31004759/331281 – Dejan

6

작동중인 버전에 대한 링크입니다.이 버전은 QueryableAttribute로 구현되었습니다. http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/88372a0b4ab9#src%2fMicrosoft.Web.Http.Data%2fQueryFilterAttribute.cs

편집 : 사용에 대한 자세한 explaination이 링크 -> http://www.strathweb.com/2012/08/supporting-odata-inlinecount-with-the-new-web-api-odata-preview-package/

+0

해당 URL은 현재 유효하지 않습니다. "URL 유효하지 않음 죄송 합니다만 URL의 검색어 문자열이 유효하지 않습니다. 문제가 계속 발생하거나이 오류에 대한 추가 정보가 필요하면 CodePlex 홈 페이지로 돌아갑니다. " –

+1

링크를 업데이트 함 : –

+1

저는 이것이 조금 오래되었음을 알고 있습니다. 그러나 조언을 구하는 사람들에게 Linq가 $ inlinecount를 지원하는 Querystring을 고려하고 싶을 수도 있습니다. https://github.com/ Roysvork/LinqToQuerystring/ –

2

지난 주에 정확한 문제가있었습니다. Check out Extending your ASP.NET Web API responses with useful metadata

이 게시물과 샘플 코드를 사용하여 OData를 사용하여 페이징 그리드를 만들고 실행했습니다. 샘플에서 자세히 설명했듯이 HttpResponseMessage를 캡처하여 항목 수를 포함하는 사용자 지정 메타 데이터에 래핑하는 위임 처리기를 만들었습니다. 기본 QueryableAttribute를 상속하는 사용자 지정 특성 인 CustomQueryableAttribute도 만들어집니다.

다소 복잡 할 수도 있지만 실제로 구현하는 것은 간단합니다. 나는 약 30 분 만에 뭔가를 가동시켰다.

웹 API의 향후 버전에는 OData가보다 완벽하게 지원되기를 바랍니다.

편집 : Odata 지원은 웹 API와 함께 제공되지 않습니다. 쿼리 할 수있는 특성이 RTM 릴리스에서 제거되고 있습니다. 보다 완벽한 OData 지원은 별도의 Nuget 패키지를 통해 최초의 relase 후에 가능할 것입니다.

+0

이 (가) http://stackoverflow.com/questions/1130049에서 옮겼습니다. – Mark