In to the C# 2014. 2. 13. 00:48

[C#] REST API 만들기

참고 : http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api


갑자기 REST 를 게임서버에서 하시는 분은 없겠죠... 

이미 여러곳에서 쓰는걸로 알고 있고, 특히 EVE 온라인에서는 외부에 API 를 공개해 유저들이 다양한 정보를 활용, 앱 같은걸 만들 수 있게 사용하고 있습니다.
( eve online. CREST document : https://wiki.eveonline.com/en/wiki/CREST_Documentation )


REST 는 여러 분야에서 사용하고 있으니 Pass...


저는 이걸 어따 쓸려고 하면.. 서버 패치, 실행, 관리 등에 사용할려고 작업중입니다. 

각 Agent 의 프로토콜을 REST로 해놓으면 가져다 붙이 좋을꺼라는 생각에..


REST를 구현 하기 위해 Node.js 를 사용했었는데 단점이 있습니다.

  1. window api 에 대한 접근이 어려움

  2. process 를 관리하기가 힘듬

  3. 사용하는 패키지 중에 build 라도 해야 한다면 각 서버마다 build 해야함

어려운건 아니지만 컴파일러를 설치해야 합니다. 적어도 0MQ...

  4. process 를 자식으로 생성해서 관리하는데 버그가 있음 

평소에는 멀쩡하다 패킷이 몰렸더니 데드락.. detach 하고 node를 죽였더니 풀림...


구현은 쉬운데, 아쉬운점이 많아서 아래 포스팅(self-hosting)을 보고 C#으로

서론은 이정도 하고 간단하게 구현해 보겠습니다.

  

1. 프로젝트 생성시 ASP.NET 웹 응용프로그램으로 생성하고, 옵션에서 web api를 선택합니다.



2. 요청시 보여주고 싶은 데이터를 Model 폴더에 class 로 생성합니다. 

namespace 때문에 굳이 model 폴더에...


3.웹에서 접근할 API 를 만들어 줍니다. 


1. 설정하기 나름이지만, 기본적으로 api/Controller이름 을 사용합니다.


2. 컨트롤러 클래스 이름을 PlayerController 로 생성했습니다. 


express 버전에서는 이렇게 까지 안만들어 졌던거 같은데....


3. 일단 이대로 빌드하고 실행해도 결과를 확일 할 수 있습니다.


실행하면 IE로 뜨게 되는데 그냥 내비두고, 크롬에서 주소창에 IE에서 보여준 주소 뒤에 /api/Player 를 입력하면 결과를 확일 할 수 있습니다.


굳이 크롬으로 하는 이유는 IE는 JSON 파일을 다운로드 받으려고 하고, 크롬은 XML 로 바로 보여줘서 입니다.


4. 이제 GET 요청시 보내줄 데이터를 위에서 생성한 Player 클래스와 연결해 봅시다.

PlayerController 클래스를 수정합니다. 


이제 확인을...


ID 로 요청해 봅니다.


POST 와 DEL 은 확인하려면 Web 페이지도 만들어야 하니 여기까지...


이정도만 만들어두면 어느 웹 or 앱 에서 Request 만해서 똭! 해서 멋진걸 만들수 있습니다.




'In to the C#' 카테고리의 다른 글

C# 6.0 New Features  (2) 2015.01.29
[C#] Task의 작업완료  (2) 2014.01.26
[C#] Action, Func 그리고 Task  (0) 2014.01.26
[C#] Attribute : 속성  (0) 2014.01.24
Lazy Initialization  (0) 2014.01.20