[TechDays Mini]에서 발표한 "ASP.NET Web API를 활용한 RESTful 서비스 개발" 세션의 발표 자료입니다.
※ 이 자료는 업로드 시점 대비 오래전 진행한 내용을 다루고 있습니다. 변경된 부분이 있거나 유용하지 않을 수 있으니 참고하시길 바랍니다.
2Naver Open Android API Translation At DCampJeikei Park
■ 제 목 : Naver 오픈api-android-tran-20160529
■ 주제 : 네이버 오픈API를 활용한 안드로이드 통역앱 만들기
■ 내용 :
- 통역앱 개발을 위한 네이버 오픈API 소개
- 통역앱 안드로이드 화면 구성
- 안드로이드앱에서 각 API 호출 및 처리
- 통역앱 작동을 위한 애플리케이션 처리 노하우
■ 난이도 수준: 초급
■ 발표자 소개: 옥상훈 강사
- 現 표준프레임워크 오픈커뮤니티 에반젤리스트
- 現 네이버 랩스 D2에반젤리스트
- 現 네이버 개발자센터 & 오픈 API 담당
- 前 한국Adobe 시스템즈 컨설턴트
- 前 한국 자바 개발자협의회 회장
■ 일시: 2016. 5. 31(화) 19:00~21:00(120분)
■ 장소: 디캠프 6층 다목적홀 (선정릉역 위치)
[TechDays Korea 2013]에서 발표한 "ASP.NET Web API를 이용한 오픈 API 개발" 세션의 발표 자료입니다.
※ 이 자료는 업로드 시점 대비 오래전 진행한 내용을 다루고 있습니다. 변경된 부분이 있거나 유용하지 않을 수 있으니 참고 부탁드립니다.
2Naver Open Android API Translation At DCampJeikei Park
■ 제 목 : Naver 오픈api-android-tran-20160529
■ 주제 : 네이버 오픈API를 활용한 안드로이드 통역앱 만들기
■ 내용 :
- 통역앱 개발을 위한 네이버 오픈API 소개
- 통역앱 안드로이드 화면 구성
- 안드로이드앱에서 각 API 호출 및 처리
- 통역앱 작동을 위한 애플리케이션 처리 노하우
■ 난이도 수준: 초급
■ 발표자 소개: 옥상훈 강사
- 現 표준프레임워크 오픈커뮤니티 에반젤리스트
- 現 네이버 랩스 D2에반젤리스트
- 現 네이버 개발자센터 & 오픈 API 담당
- 前 한국Adobe 시스템즈 컨설턴트
- 前 한국 자바 개발자협의회 회장
■ 일시: 2016. 5. 31(화) 19:00~21:00(120분)
■ 장소: 디캠프 6층 다목적홀 (선정릉역 위치)
[TechDays Korea 2013]에서 발표한 "ASP.NET Web API를 이용한 오픈 API 개발" 세션의 발표 자료입니다.
※ 이 자료는 업로드 시점 대비 오래전 진행한 내용을 다루고 있습니다. 변경된 부분이 있거나 유용하지 않을 수 있으니 참고 부탁드립니다.
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
Do IoT Yourself 세미나의 세 번째 발표 자료 프리뷰입니다.
이번 세미나에서는 지난 세미나에서 개발한 아두이노 기반 온도 센서 정보를 RESTful Web API 형태의 Open API로 개발하는 과정을 다룹니다.
프리뷰 자료이기 때문에 이후 수정, 변경될 가능성이 있으니 양해 바랍니다.
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
우아한테크코스 4기 마르코(장원석) 테코톡 발표자료
Progressive Web App의 service worker, manifest, push notifcation, cache 등을 중심으로
장원석
nextjws@gmail.com
https://wonsss.github.io/
9xD Django Study
파이썬 웹프로그래밍 - Django로 배우는 쉽고 빠른 웹개발 Charter 2
발표자 - 김한성
ppt 내용 : 실습 예제 및 내용 요약
개발툴 : pycharm
개발환경 : python 3.5 이용(일부 예제의 경우 동작안함 - 주석 참고)
소스코드 : 2 page github 링크이용
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application InsightsSangHoon Han
[TechDays Mini]에서 발표한 "VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights" 세션의 발표 자료입니다.
※ 이 자료는 업로드 시점 대비 오래전 진행한 내용을 다루고 있습니다. 변경된 부분이 있거나 유용하지 않을 수 있으니 참고하시길 바랍니다.
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
Do IoT Yourself 세미나의 세 번째 발표 자료 프리뷰입니다.
이번 세미나에서는 지난 세미나에서 개발한 아두이노 기반 온도 센서 정보를 RESTful Web API 형태의 Open API로 개발하는 과정을 다룹니다.
프리뷰 자료이기 때문에 이후 수정, 변경될 가능성이 있으니 양해 바랍니다.
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
우아한테크코스 4기 마르코(장원석) 테코톡 발표자료
Progressive Web App의 service worker, manifest, push notifcation, cache 등을 중심으로
장원석
nextjws@gmail.com
https://wonsss.github.io/
9xD Django Study
파이썬 웹프로그래밍 - Django로 배우는 쉽고 빠른 웹개발 Charter 2
발표자 - 김한성
ppt 내용 : 실습 예제 및 내용 요약
개발툴 : pycharm
개발환경 : python 3.5 이용(일부 예제의 경우 동작안함 - 주석 참고)
소스코드 : 2 page github 링크이용
VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application InsightsSangHoon Han
[TechDays Mini]에서 발표한 "VSO의 매력 터지는 핵심 기능! 클라우드 기반의 성능 분석 도구 Application Insights" 세션의 발표 자료입니다.
※ 이 자료는 업로드 시점 대비 오래전 진행한 내용을 다루고 있습니다. 변경된 부분이 있거나 유용하지 않을 수 있으니 참고하시길 바랍니다.
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdfSangHoon Han
[2012 TAEYO.NET 신년 세미나]에서 발표한 "ASP.NET MVC Framework 개발자를 위한 Razor Syntax" 세션의 발표 자료입니다.
※ 이 자료는 오래전 진행한 내용을 다루고 있습니다. 작성 시점 혹은 이후라면 유용하지 않을 수 있으니 참고 부탁드립니다.
ASP.NET 4.0 New Features Part2 - URL Routing(ASP.NET WebForms)SangHoon Han
[2010 TAEYO.NET 신년 세미나]에서 발표한 "ASP.NET 4.0 New Features Part 2 - URL Routing (ASP.NET WebForms)" 세션의 발표 자료입니다.
※ 이 자료는 오래전 진행한 내용을 다루고 있습니다. 작성 시점 혹은 이후라면 유용하지 않을 수 있으니 참고 부탁드립니다.
[TechDays 2015]에서 발표한 "두근두근 ASP.NET 5!" 세션의 발표 자료입니다.
ASP.NET의 Reboot이라고까지 불리는 ASP.NET 5를 미리 만나볼 수 있는 시간을 가져봅니다.
무엇이 달라졌고 개선되었는지, 또 어떤 매력을 가졌는지에 대해서 알아볼 수 있는 ASP.NET 5와의 첫 만남!
그 두근거림을 느껴 보시기 바랍니다.
1. ASP.NET Web API를 활용한
RESTful 서비스 개발
- 대학내일 한상훈 매니저
2014년 1월 새해 명품 특강!
ASP.NET,
서비스 플랫폼으로 날다!
2. 세션 소개
.NET Framework 기반의 Web API 프레임워크인 ASP.NET Web API를
살펴보고, 이를 활용하여 보다 쉽고 빠르게 다양한 유형의 클라이언트에서
활용이 가능한 RESTful 서비스 개발 방법을 파헤쳐 보겠습니다.
ASP.NET Web API의 기본적인 개념에서 구현에 이르기까지 실제 구동되는
데모를 중심으로 살펴봅니다.
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 서비스
기존 방식의 웹 접근과 RESTful API와의 요청 URI 차이
15. 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 progra
mming model
• HttpClient
• Task-based async
• Formatting, content n
egotiation
• Server-side query composit
ion
• Create custom help pages
• Self-host
• Tracing
WCF Web API
16. ASP.NET Web API 특징
• HTTP 기반의 프로그래밍 모델 지원
• 간단하고 쉽게 HTTP 리소스 생성 가능
• HTTP 내용 협상(content negotiation)
• 공통 관심사(cross cutting concerns)의 분리
• 도움말 페이지(help page) 생성
• 유연한 호스팅(hosting)
• 이식 가능한 Web API 클라이언트
• Web API 보안(CORS, OAuth 2.0, Authn Filter)
• 가볍고, 테스트 가능하고, 확장이 가능함
18. ASP.NET Web API 구현
• ApiController를 상속받는 컨트롤러 생성
• 각각의 액션메소드 구현
– 액션메소드의 접두사가 HTTP 메소드와 서로 매핑
• GetComment -> HTTP GET 메소드
• PostComment -> HTTP POST 메소드
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> GetComment()
{
return new string[] { "value", "value" };
}
20. 라우팅(Routing)
• ApiController와 URI가 서로 매핑
– {controller} + “Controller” = ApiController 클래스명
– HTTP 메서드를 직접 적용
• [HttpGet / Post / Put / Delete]
– HTTP 메소드를 중복 적용
• [AcceptVerbs(“GET”, “HEAD”)]
– 액션 이름 라우팅
• [ActionName(“Thumbnail”)]
– 비-액션(Non-Actions) 처리
• [NonAction]
21. • 간단한 매개 변수는 URI를 통해서 바로 전달
– 라우트 데이터(Route data), 쿼리 파라미터(Query parameters)
• 복합 형식(Complex Type)은 HTTP Body를 통해서 전달
– MediaTypeFormatter를 사용하여 Content-Type 기반으로 개체화 가능
– JSON, XML, Form 데이터는 기본으로 제공
• 사용자 정의 매개변수 바인딩(Custom parameter binding)
– [FromUrl], [FromBody], [ModelBinder] 등을 사용하여 재정의
액션 파라미터(Action Parameter)
22. • 모든 요청(Request)에서 유효성 검사 실행
• 유효성 검사 오류는 ModelState 개체에 축적
– ModelState.IsValue로 체크
• DataAnnotation 또는 사용자 정의 유효성 검사 로직 사용
유효성 검사(Validation)
23. • 응답 형식(Format)은 HTTP 내용 협상에 기초하여 결정
– [Accept] 헤더에 원하는 형식을 표현
• 서버의 응답 형식을 결정하는 요소
– 요청(Request)
– 액션메서드의 반환 형식
– MediaTypeFormatter 구성
• JSON과 XML 기본 제공
내용 협상(Content Negotiation)
24. • Web API를 제공할 때, API 사용법을 설명하는 도움말 페이지 제공
– ApiExplorer 클래스를 기반으로 동작
– Areas/HelpPages/ 하위 폴더 구성
• API 문서 추가 : ~/App_Data/XmlDocument.xml
API 도움말(Help) 페이지
27. • 중앙 집중식의 단점을 보완하고 직관적인 라우팅 설정
– 보다 유연하고 명확한 라우팅
• 어트리뷰트 라우팅 활성
– App_Start / WebApiConfig.cs
• 어트리뷰트 라우팅 적용
어트리뷰트 라우팅(Attribute routing)
// Web API routes
config.MapHttpAttributeRoutes();
[Route("api/store/books/{bookid}")]
public Book GetBookByBookId(int bookid) { … }
28. 어트리뷰트 라우팅(Attribute routing)
[Route("api/info/books/{bookid:int}")]
public Book GetInfoByBookId(int bookid)
[Route("api/info/books/{bookid:alpha}")]
public Book GetInfoByBookId(string bookid)
[Route("api/info/books/{bookid:int?}")]
public Book GetInfoByBookId(int bookid = 1) { … }
[Route("api/info/books/{bookid:int=1}")]
public Book GetInfoByBookId(int bookid) { … }
제약사항
옵션값 및 기본값
31. • 웹에서 데이터 제어가 가능하게 하는 데이터 액세스 프로토콜
– 웹을 통해 데이터 소스에 대한 표준 CRUD 액세스를 제공
• Nuget 패키지 추가
– Microsoft.AspNet.WebApi.OData
• [Queryable], IQueryable<T>
• $top, $skip, $orderby, $filter, $select, $expand, $batch …
OData(Open Data Protocol) 지원
// OData 활성화
[Queryable]
public IQueryable<Product> GetProduct(…)
32.
33. • .NET 웹 서버와 웹 응용프로그램 사이의 표준 인터페이스를 정의
– 웹 응용프로그램을 서버와 분리
– IIS가 아닌 별도의 프로세스에서 웹 응용프로그램을 자체-호스트(Self-Host)
• Nuget 패키지 추가
– Microsoft.AspNet.WebApi.OwinSelfHost
• Microsoft.Owin.Host.HttpListener
– OWIN 응용 프로그램을 자체 호스트하기 위한 HTTP 서버 제공
OWIN(Open Web Interface for .NET) 통합
string baseAddress = "http://localhost:9000/";
// Start OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
34.
35. • 처리되지 않은 대부분의 예외는 HTTP 상태 코드 500 응답
• 예외 처리 기법
– HttpResponseException
• HttpResponseException 형식은 별개로 취급 (HTTP 응답 반환을 위해 설계됨)
• 생성자에 지정한 HTTP 상태 코드를 반환
– Exception Filter
• HttpResponseException 형식을 제외한 모든 유형의 처리되지 않은 예외에 대응
• 액션메소드 등록, 컨트롤러 등록, 전역 등록
– HttpError
• 응답 본문에 오류 정보를 반환할 수 있는 일관된 방법 제공
• 강력한 형식의 모델과 동일하게 내용 협상 및 직렬화 처리 수행
오류 및 예외 처리
36.
37. • Global Error Handling
• Attribute Routing Improvements
• Help Page Improvements
• IgnoreRoute Support
• BSON Media-Type Formatter
• Better Support for Async Filters
• Query Parsing for the Client Formatting Library
• Various bug fixes
ASP.NET Web API 2.1
40. • ASP.NET Web API 공식 웹사이트
– http://www.asp.net/web-api
• What's New in ASP.NET Web API 2.1
– http://www.asp.net/web-api/overview/releases/whats-new-in-aspnet-web-api-21
• Taeyo.NET ASP.NET Web API 번역 아티클
– http://www.taeyo.net/Columns/View.aspx?SEQ=464&PSEQ=35
• Egocube.pe.kr ASP.NET Web API 번역 아티클
– http://www.egocube.pe.kr/Translation/Index/asp-net-web-api
• 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
참고자료