Dotnet Web Api 인터뷰 노트의 OData
웹 API 5.2
OData v4
Visual Studio 2017(Visual Studio 2017 다운로드here )
엔티티 프레임워크 6
.NET 4.7.2
ㅏ. OData 끝점 구성
App_Start/WebApiConfig.cs 파일을 엽니다. 다음 using 문을 추가합니다.
using ProductService.Models;
using Microsoft.AspNet.OData.Builder;
using Microsoft.AspNet.OData.Extensions;
그런 다음 Register 메서드에 다음 코드를 추가합니다.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code:
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Product>("Products");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: builder.GetEdmModel());
}
}
Inherits odatacontroller:
public class ProductsController : ODataController
public async Task Patch([FromODataUri] int key, Delta 제품)
OData는 PATCH 및 PUT이라는 엔터티 업데이트를 위한 두 가지 의미 체계를 지원합니다.
PATCH는 부분 업데이트를 수행합니다. 클라이언트는 업데이트할 속성만 지정합니다.
PUT은 전체 엔터티를 대체합니다.
비. 쿼리 옵션
다음은 ASP.NET WebAPI가 지원하는 OData 쿼리 옵션입니다.
$orderby: 가져온 레코드를 오름차순 또는 내림차순과 같은 특정 순서로 정렬합니다.
*?$orderby=ProductName desc *
$orderby=제품명 asc
$select: 결과 집합에서 열 또는 속성을 선택합니다. 가져온 결과에 포함할 모든 특성 또는 속성을 지정합니다.
$skip: 레코드 또는 결과의 수를 건너뛸 때 사용합니다. 예를 들어 전체 테이블 데이터를 가져오는 동안 데이터베이스에서 처음 100개의 레코드를 건너뛰고 싶다면 $skip을 사용할 수 있습니다.
*$top=5&$skip=3 *
*$orderby=ProductName asc &$skip=6 *
$top: 상위 n개의 레코드만 가져옵니다. 예를 들어 데이터베이스에서 상위 10개 레코드를 가져오려면 내 특정 서비스가 $top 쿼리 옵션을 지원하도록 OData를 활성화해야 합니다. ? $탑=2
$orderby=제품 ID asc&$top=5
$expand: 가져온 엔터티의 관련 도메인 엔터티를 확장합니다.
$filter: 특정 조건에 따라 결과 집합을 필터링합니다. LINQ의 where 절과 같습니다. 예를 들어 90% 이상의 점수를 받은 학생 50명의 기록을 가져와서 이 쿼리 옵션을 사용할 수 있습니다.
$filter=제품 이름 eq 컴퓨터
*$filter=ProductId lt 3 *
*$filter=ProductId ge 3 and ProductId le 5 *
*$filter=substringof(IPhone,ProductName) *
$inlinecount: 이 쿼리 옵션은 주로 클라이언트 측에서 페이지 매김에 사용됩니다. 서버에서 클라이언트로 가져온 총 엔티티 수를 알려줍니다.
[Queryable] [GET(allproducts)] [GET(all)] public HttpResponseMessage Get() { var products = _productServices.GetAllProducts().AsQueryable(); var productEntities = products as List ?? products.ToList(); if (productEntities.Any()) return Request.CreateResponse(HttpStatusCode.OK, productEntities.AsQueryable()); throw new ApiDataException(1000, Products not found, HttpStatusCode.NotFound); }
씨. 표준 필터 연산자
Web API는 다음 표에 나열된 표준 OData 필터 연산자를 지원합니다.
운영자
설명
예시
비교 연산자
등가
동일한
$filter=수익 eq 100000
네
같지 않음
$filter=수익 네 100000
GT
보다 큰
$filter=수익 100000
게
크거나 같음
$filter=수익 ge 100000
중위
미만
$filter=수익 lt 100000
르
보다 작거나 같음
$filter=수익 르 100000
논리 연산자
그리고
논리적이고
$filter=수익 lt 100000 및 수익 gt 2000
또는
논리적 또는
$filter=contains(name,(sample)) 또는 contains(name,test)
아니다
논리적 부정
$filter=포함하지 않음(이름, 샘플)
그룹화 연산자
( )
우선 순위 그룹화
(contains(name,sample) 또는 contains(name,test)) 및 수익 gt 5000
디. 표준 쿼리 함수
웹 API는 이러한 표준 OData 문자열 쿼리 함수를 지원합니다.
기능
예시
포함
$filter=contains(이름,(샘플))
로 끝나다
$filter=endswith(name,Inc.)
시작하다
$filter=startswith(이름,a)
Paging:
[Queryable(PageSize = 10)]
이자형. 쿼리 제약:
[Queryable(AllowedQueryOptions =AllowedQueryOptions.Filter | AllowedQueryOptions.OrderBy)]
[GET(전상품)]
[모든 것을 가져라)]
공개 HttpResponseMessage Get()
Reference
이 문제에 관하여(Dotnet Web Api 인터뷰 노트의 OData), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ssanjeevi/odata-in-dotnet-web-api-interview-notes-5eo8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)