IT정보공유/C#

C# ASP.NET Core 웹 응용프로그램 - RESTFul API 서버 만들기 (1)

알지오™ 2019. 8. 10.

C#으로 윈도우 어플리케이션만 개발하다가, 실행파일 또는 dll, 서비스등으로 동작하는 웹 REST API 서버를 만들 수 있다는 사실을 알았네요.

NET Core를 통해 만들 수 있고, 비쥬얼 스튜디오의 새 프로젝트 메뉴를 통해

아래 사진과 같이 ASP.NET Core 웹 응용프로그램을 생성해 주면 됩니다.

 

C#으로 IIS설치 없는 ASP.NET Core 웹 응용프로그램을 만들어보자.(REST API 서버)

 

ASP.NET Core 웹 응용 프로그램 프로젝트 개발

 

웹 -> .NET Core -> ASP.NET Core 웹 응용 프로그램 순으로 선택하고, 
솔루션 위치와 이름을 적당하게 정해주고 다음으로 진행합니다.

 

C# API 웹서버 만들기

 

그 다음화면에서는 템플릿을 정하는 건데, ASP.NET Core에 대해 아무것도 모르는 상태이므로
그냥 API를 선택해 줍니다.
그러면 아래와 같이 기본적인 템플릿을 갖춘 프로젝트가 하나 생성이 됩니다.

 

컨트롤러와 URI 경로설정

 

빨간색 네모 친 부분에 대해서는 각각 별도로 설명을 드리겠습니다.

 

 

[Route("api/[controller]")]

URL 호출시 사용되는 URL 경로입니다. 솔루션 탐색기 상의 Controllers\ValuesController.cs 라고 보이실텐데 "Values"가 컨트롤러 이름이고, 이 프로젝트가 실행되어 웹서버가 동작하게 되면 브라우저를 통해 http://localhost:8080/api/values 로 접근한다는 의미입니다.

 

[HttpGet]

이 부분은 페이지 호출시 GET 방식으로 접근했을경우에 해당 메소드로 데이터가 넘어온다는 의미입니다.

 

[HttpPost]

이 부분은 페이지 호출시 POST 방식으로 접근했을경우에 해당 메소드로 데이터가 넘어온다는 의미입니다.

 

 

 

밑줄친 부분은 꼭 기억해두세요. 

 

기본적으로 생성되는 HttpPost의 Post함수 파라미터 타입은 [FromBody]string value 입니다만
추후에 새로 만드는 컨트롤러에서는 파라미터 타입을 클래스 형태로 바꿀 겁니다. 
그 이유는 클라이언트 쪽에서 POST로 Json 데이터를 던지면 REST Server 입장에서 JSON 데이터를 받을때 클래스를 선언해서만 받을 수 있고 string 타입으로는 못받아 오더라고요.

 

기본적으로 만들어진 "values"컨트롤러 말고, Controller 폴더에 마우스 우클릭 해서 Park_Get_Car_InController.cs 라는 컨트롤러를 추가했습니다. (웹 페이지가 하나 더 생긴거라고 생각하면 됩니다.)

 

 

이렇게 새로 만들어진 컨트롤러와 기존 기본생성된 클래스와는 Route 부분만 다르고 동일한데
HttpPost 부분에 파라미터를 string -> class로 변경시켰습니다.
 
아래 사진에 씌여진 주석 처럼 json 데이터를 받을 때는 string으로 하면 null 값이 오고
Class로 받아야 값이 정상적으로 채워져서 넘어옵니다.
 

 

디버깅시에는 비주얼 스튜디오에서 실행해준 브라우저를 통해 URL로 접속을 하면 되고
Post로 데이터를 넘기는 부분에 대해서는 맨아래쪽 REST API를 요청하기 위한 C# Client Code 부분을 참조하기 바랍니다.

 

http://localhost:5000/api/Park_Get_Car_In

 

 

커맨드창에서 dll이 만들어진 곳에 가서 커맨드 라인 명령어 dotnet WebApplication3.dll 라고 실행을 시키면 실행된다.

 

Prompt 상에서 실행이 되고, exe 형태로 만드는 방법이나, 서비스로 등록하는 방법도 있는것 같으니
해당부분에 대해서는 검색을 해보시고 알려주시기 바랍니다. ㅋㅋ

 

Windows 서비스에서 ASP.NET Core 호스트

 

Windows 서비스에서 ASP.NET Core 호스트

Windows 서비스에서 ASP.NET Core 앱을 호스트하는 방법을 알아봅니다.

docs.microsoft.com

 

REST API를 요청하기 위한 C# Client Code

 

//
//
string requestJson = "";
string uri = "";

requestJson = "{\"CarNo\":\"" + CarNo + "\"}";

WebClient webClient = new WebClient();
webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
webClient.Encoding = UTF8Encoding.UTF8;

uri = "http://localhost:5000/api/Park_Get_Car_In";

retJson = webClient.UploadString(uri, requestJson);
//
//

 

2017/06/15 - [IT/C#] - HttpWebRequest를 이용한 POST 방식 웹 URL 호출 방법

2019/08/14 - [IT/C#] - C#ASP.NET Core 웹 응용프로그램 - REST API 서버 만들기 (2)

댓글

💲 추천 글