티스토리 뷰
MVC 프레임워크나 Webform을 이용해서 WebAPI 서비스를 만들 수 있다.
해당 포스트는 웹폼 (Webform)을 이용해서 만들어 보도록 한다.
1. 닷넷프레임워크 4.5 이상버전을 선택하고 빈 웹폼을 생성한다.
2. 빈 웹폼이다보니 아무것도 없다. 아래와 같은 구조로 파일을 생성해준다.
1. MyController.cs 생성 (WebAPI컨트롤러 클래스)
- 실제 기능을 담당하는 WebAPI 컨트롤러
2. Global.asax 생성
3. WebApiConfig.cs 생성
- WebAPI의 라우팅 규칙을 선언하는 파일
4. 패키지 관리자 콘솔(Nuget)을 이용해서 추가 기능설치
1. Install-Package Microsoft.AspNet.WebApi.WebHost (WebAPI 라우팅을 사용자가 정의한대로 구성)
2. Install-Package Microsoft.AspNet.WebApi.Cors (WebAPI CrossDomain 구성)
5. WebApiConfig를 아래와 같이 설정한다.
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Net.Http.Formatting;
5: using System.Web;
6: using System.Web.Http;
7:
8: namespace WebApi_CustomRoute
9: {
10: public static class WebApiConfig
11: {
12: public static void Register(HttpConfiguration config)
13: {
14: // Attribute routing. JSON 형식으로 보낸다
15: config.MapHttpAttributeRoutes();
16: config.Formatters.Clear();
17: config.Formatters.Add(new JsonMediaTypeFormatter());
18: config.EnableCors();
19:
20: // Convention-based routing. 기본 라우팅규칙
21: config.Routes.MapHttpRoute(
22: name: "DefaultApi",
23: routeTemplate: "api/{controller}/{action}/{id}",
24: defaults: new { id = RouteParameter.Optional }
25: );
26: }
27: }
28: }
6. WebApiConfig 를 설정했으면 global.asax 파일의 Application_Start 메소드에 아래처럼 정의합니다
1: GlobalConfiguration.Configure(WebApiConfig.Register);
WebAPI가 시작될때 Route 규칙을 정의함.
7. 환경구성이 완료 되었으면 실제로 서비스할 API MyController.cs 을정의합니다.
1: using System;2: using System.Collections.Generic;3: using System.Linq;4: using System.Net;5: using System.Net.Http;6: using System.Web.Http;7: using System.Web.Http.Cors;8:
9: namespace WebApi_CustomRoute.Service10: {
11: [EnableCors("*", "*", "*")] // 크로스 브라우징을 위한 속성12: [RoutePrefix("api")] // MyController 에 대한 라우팅 규칙13: public class MyController : ApiController14: {
15: [HttpGet]
16: [Route("book")]17: public IEnumerable<string> GetBooks()18: {
19: return new string[] {"아프니까청춘이다.", "안아파도청춘이다.", "그래서청춘이다."};20: }
21:
22: [HttpGet]
23: [Route("name")]24: public IEnumerable<string> GetBookById(string book)25: {
26: return new string[] { "책이름은? --> " + book };27: }
28:
29: [HttpGet]
30: [Route("people")]31: public IEnumerable<string> GetPeople()32: {
33: return new string[] { "홍길동", "임꺽정", "장길산" };34: }
35:
36: [HttpGet]
37: [Route("language")]38: public IEnumerable<string> GetLanguage()39: {
40: return new string[] { "C#", "JavaScript", "JAVA" };41: }
42: }
43: }
자 이제 빌드를 하고 Fiddler를 통해서 호출해봅시다.
1. GetBooks() 메소드는 사용자가 정의한 라우팅 규칙에따라 /api/book 으로 호출
GetPeople()이나 GetLanguage() 역시 Route에 정의한 이름으로 호출하면된다.
2. GET 파라미터가 있는 경우는? 아래와 같이 ?뒤에 인자값을 넘겨서 호출
jQuery Ajax를 이용해서 받을때 혹 IE에서 크로스도메인 문제가 발생한다면
스크립트 상단에 1: $.support.cors = true 를 선언해주면 됩니다.
웹API, WEBAPI, CrossDomain, Ajax, Route, 라우팅, ASP.NET WEbform, 웹폼 WebAPI, ASP.NET
'프로그래밍 > ASP.NET WebAPI' 카테고리의 다른 글
사이트 성능튜닝 Gzip 압축을 적용해보자 (0) | 2015.01.28 |
---|---|
WebApi 에서 POST 데이터 컨트롤러에서 배열로 받기 (0) | 2015.01.19 |
Web Api 에서 세션 사용하기 (0) | 2015.01.19 |
WebApi Ajax 크로스 도메인 해결방법 (0) | 2014.06.09 |
- Total
- Today
- Yesterday
- jQuery
- CSS
- ASP.NET
- html5
- jQuery Mobile
- WebApi
- css3
- Excel
- jquery chart
- JavaScript
- 프로시저
- Style
- Mobile
- radius
- rowspan
- 저장프로시저
- drag&drop
- 셀렉터
- 자바스크립트
- IE
- 제이쿼리
- grid
- Ajax
- workbook
- json
- MSSQL
- JS
- SVG
- WCF
- Chart
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |