[TechDays Korea 2013]에서 발표한 "ASP.NET Web API를 이용한 오픈 API 개발" 세션의 발표 자료입니다.
※ 이 자료는 업로드 시점 대비 오래전 진행한 내용을 다루고 있습니다. 변경된 부분이 있거나 유용하지 않을 수 있으니 참고 부탁드립니다.
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
ASP.NET Web API를 이용한 오픈 API 개발
1.
2. 세션 소개
.NET 프레임워크 기반의 Web API 프레임워크인 ASP
.NET Web API에 대해서
알아보고, Web API 2.0의 새로운 기능 (어트리뷰트 라우팅, Odata 지원 등)에
대해서도 살펴봅니다.
이 기술을 사용하면 다양한 유형의 클라이언트에서 사용할 수 있는 RESTful
응용프로그램을 매우 쉽게 구축할 수 있습니다.
10. 동작 설명 SQL HTTP 기존 방식 RESTful API
Create 생성 INSERT POST POST, /Write.aspx?name=contact POST, /Contact
Read 읽기 SELECT GET GET, /List.aspx?name=contact&id=1 GET, /Contact/1
Update 갱신 UPDATE PUT POST, /Edit.aspx?name=contact&id=1 PUT, /Contact/1
Delete 삭제 DELETE DELETE GET, /Delete.aspx?name=contact&id=1 DELETE, /Contact/1
RESTful Service
기존 방식의 웹 접근과 RESTful API와의 요청 URI 차이
13. ASP
.NET Web API 특징
• HTTP 기반의 프로그래밍 모델 지원
• 간단하고 쉽게 HTTP 리소스 생성 가능
• HTTP 내용 협상(content negotiation)
• 공통 관심사(cross cutting concerns)의 분리
• 도움말 페이지(help page) 생성
• 유연한 호스팅(hosting)
• 가볍고, 테스트 가능하고, 확장이 가능함
16. MVC Framework + WCF Web API
• ASP.NET Routing
• Model binding
• Validation
• Filters
• Link generation
• Testability
• IoC integration
• VS template
• Scaffolding
ASP.NET MVC
• Modern HTTP program
ming model
• HttpClient
• Task-based async
• Formatting, content ne
gotiation
• Server-side query compositi
on
• Create custom help pages
• Self-host
• Tracing
WCF Web API
20. ASP
.NET Web API 구현
• ApiController 를 상속받는 컨트롤러 생성
• 각각의 액션메서드 구현
– HTTP 메서드와 액션메서드의 접두사가 서로 매핑
• GetComment, PostComment
– 다른 이름을 선호하는 경우
• [HttpGET / Post / Put / Delete] 특성 사용
22. • 간단한 매개 변수는 URI를 통해서 바로 전달
– 라우트 데이터(Route data), 쿼리 파라미터(query parameters)
• 복합 형식(Complex Type)은 HTTP Body를 통해서 전달
– JSON, XML, Form 데이터는 기본으로 제공
• 사용자 정의 매개변수 바인딩(Custom parameter binding)
– [FromUrl], [FromBody], [ModelBinder] 등을 사용하여 재정의
액션 파라미터 (Action Parameter)
23. • 모든 요청(Request)에서 유효성 검사 실행
• 유효성 검사 오류는 ModelState 개체에 축적
– ModelState.IsValue
• DataAnnotation 또는 사용자 정의 유효성 검사 로직 사용
유효성 검사 (Validation)
24. • 응답 형식(Format)은 HTTP Content Negotiation에 따라서 결정
– [Accept] 헤더
• 서버의 응답 형식을 결정하는 요소
– 요청(Request), 액션메서드의 반환 형식, MediaTypeFormatter
• JSON과 XML 기본 제공
내용 협상 (Content Negotiation)
27. • 어트리뷰트 라우팅(Attribute routing)
• 향상된 테스팅 기능(IHttpActionResult)
• OData: $select, $expand, $batch
• 요청 일괄 처리
• OWIN(Open Web Interface for .NET) 통합
• Web API 보안 (CORS, OAuth 2.0, authn filters)
• 이식 가능한 Web API 클라이언트
ASP
.NET Web API 2 새로운 특징
28. • 중앙 집중식의 단점을 보완하고 직관적인 라우팅 설정
– 보다 유연하고 명확한 라우팅
• Attribute Routing 활성화
어트리뷰트 라우팅 (Attribute routing)
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
29. • 웹에서 데이터를 조회하고 수정할 수 있도록 주고 받는 웹(프로토콜)
• [Queryable], IQueryable<T>
• $top, $skip, $orderby, $filter, $select, $expand, $batch …
OData(Open Data Protocol) 지원
// OData 활성화
[Queryable]
public IQueryable<Product> GetProduct(…)
33. 우리 함께 해요!!
• Taeyo.NET
– http://www.taeyo.net
• ASP.NET Korea user Group
– https://www.facebook.com/groups/177323639028540/
• Microsoft ALM Korea
– https://www.facebook.com/groups/MicrosoftALMKorea/
34. • ASP.NET Web API 공식 웹사이트
– http://www.asp.net/web-api
• ASP.NET vNext Web API 2
– http://www.asp.net/vnext/overview/aspnet-web-api
• Taeyo.NET ASP.NET Web API 번역 아티클
– http://www.taeyo.net/Columns/View.aspx?SEQ=464&PSEQ=35
• Taeyo.NET Windows Azure 강좌
– http://www.taeyo.net/Columns/View.aspx?SEQ=409&PSEQ=33&IDX=1
• Scott hanselman Blog
– http://www.hanselman.com/
• Build RESTful API's with ASP.NET Web API
– http://www.asp.net/web-api/tutorials/hands-on-labs/build-restful-apis-with-aspnet-web-api
• Introduction to ASP.NET Web API
– http://www.codeproject.com/Articles/549152/Introduction-to-ASP-NET-Web-API
• ASP.NET Web API 2.0 and the new OData keywords
– http://www.devcurry.com/2013/07/aspnet-web-api-20-and-new-odata-keywords.html#.Ukm2Hyuwf4a
• 닷넷코리아 온라인 세미나 1회
– http://www.dotnetkorea.com/DotNetNote/BoardList.aspx?BoardName=Seminar
참고자료