Azure API Management를 사용하여 삶을 더 쉽게 만드는 방법
오늘날 웹에서 가장 흥미로운 진화 중 하나는 기업과 개인에 의해 노출되는 공개적으로 사용 가능한 API의 수가 계속 증가하고 있다는 것입니다.
오늘날 웹에서 가장 흥미로운 진화 중 하나는 기업과 개인에 의해 노출되는 공개적으로 사용 가능한 API의 수가 계속 증가하고 있다는 것입니다. 이러한 API를 통해 소유자는 내부 시스템의 데이터를 인터넷에 노출하여 외부 개발자가 API를 사용할 수 있도록 할 수 있습니다. ProgrammableWeb과 같은 웹 사이트에는 이러한 모든 API가 나열되어 있으며 이 목록은 나날이 증가하고 있습니다.
이 모든 것이 의미하는 바는 데이터나 서비스를 활용하는 애플리케이션을 만드는 대신 API를 게시하기만 하면 다른 사람들이 애플리케이션을 만들 수 있다는 것입니다. 또는 둘 다 할 수 있습니다. 예를 들어 Facebook, Twitter 및 Google은 모두 자체 애플리케이션을 가지고 있지만 서비스와 데이터를 API에 게시합니다.
이러한 API를 만드는 것과 API를 게시하는 것은 다른 한 가지입니다. 당신은 아마도 모든 사람이 당신의 개발에 무제한으로 접근하는 것을 원하지 않을 것입니다 – 당신은 예제가 있는 문서 사이트를 원할 수도 있고, 아주 당연히, 그것을 수익화하고 싶을 수도 있습니다.
이제 좋은 소식이 있습니다: Azure 관리 API는 이 모든 것 이상을 수행합니다! 이를 통해 API를 인터넷에 게시하고, 코드 샘플 및 문서를 자동으로 생성하고, 액세스 및 제한을 구성하고, API 사용을 분석하는 등의 작업을 수행할 수 있습니다.
우리는 무엇을 보여줄 것인가?
이 블로그 게시물에서는 Azure Management API에 게시된 API를 만들어 내부 데이터 원본을 클라우드에 게시합니다. 여기에는 다음 단계가 포함됩니다.
- Create a Web API
- 이 Web API를 Azure 웹앱에 게시
- Publish to Azure Management API
- 클라이언트 프로젝트에서 사용
Create a Web API That Publishes Data
오늘의 게시물에서는 가상의 데이터 소스를 게시하기 위해 ASP.NET Web API 프로젝트를 만들 것입니다. 이는 내부 데이터베이스(예: 테스트 결과, 분석 데이터 등)일 수 있습니다. 단순화를 위해 실제 데이터 소스를 게시하지는 않지만 데이터 소스를 시뮬레이션하기 위해 스텁을 만듭니다. 두 경우 모두 수행해야 할 단계는 정확히 동일합니다.
이것이 가장 쉬운 솔루션이므로 가상의 데이터 원본을 Azure에 게시하려고 합니다. 자유롭게 따라할 수 있습니다 – (무료) 활성 Azure 구독이 필요합니다. 또는 인터넷에서 사용할 수 있는 한 모든 IIS 웹 사이트에 배포할 수 있습니다.
그러니 근육을 스트레칭하고 손가락을 꺾고 본론으로 들어가 봅시다!
Visual Studio를 열어 시작합니다. Visual Studio 2015를 사용하고 있지만 다른 버전에서도 작동해야합니다. 파일 -> 새 프로젝트를 클릭하고 Visual C# -> 웹 -> ASP.NET 웹 응용 프로그램을 선택합니다.

유용한 이름과 위치를 입력하고 확인을 클릭합니다.
다음 화면에서 템플릿을 선택할 수 있습니다. ASP.NET 4.5.2에서 웹 API 템플릿을 사용하고 Azure에서 호스팅하도록 명령합니다.

또한 Change Authentication(인증 변경)을 클릭하고 No Authentication(인증 없음)으로 설정합니다.

이 화면에서 확인을 클릭하고 새 프로젝트 화면에서 확인을 클릭합니다. Azure 팝업에서 Azure Web App의 세부 정보를 입력해야 합니다. 오스트레일리아 동부에서 새로운 Azure Web App을 만들기로 결정했습니다.

확인을 클릭하면 프로젝트가 만들어집니다. 몇 분 정도 걸릴 수 있으니 커피 한 잔을 들고 다음 단계를 밟을 준비를 하세요!
기본 웹 API 템플릿에는 많은 항목이 포함되어 있으며 대부분은 필요하지 않습니다. 하지만 Azure API Management 측면에 초점을 맞추고 싶기 때문에 프로젝트를 정리하지는 않겠습니다.
기본 템플릿에는 ValueController라는 하나의 ApiController가 포함되어 있습니다. F5 키를 누르고 /api/values로 이동합니다. 두 개의 테스트 값이 표시되어야 합니다.

프로덕션 API에서는 이 템플릿을 사용하여 시작하고 싶지 않을 수 있으며 처음부터 시작하여 필요한 항목만 추가하는 것이 좋습니다. 그러나 우리의 경우이 기본 템플릿은 잘 작동합니다.
웹 API 서비스는 RESTFUL 서비스입니다. 이것의 단점은 기계가 읽을 수 있는 정의가 없다는 것입니다. Azure API 관리에는 Swagger 또는 WADL 정의가 필요합니다. 기본적으로 이것은 사용할 수 없으므로 지금 Swashbuckle을 추가하여 추가하겠습니다. NuGet 패키지 관리자를 열고, Swashbuckle을 검색하고, 프로젝트에 Swashbuckle.Net45를 추가합니다.

F5 키를 클릭하고 /swagger로 이동하여 다음을 확인합니다.

Azure 관리 API를 만들어 보겠습니다.
Azure에서 API를 관리하려면 먼저 Azure에 게시해야 합니다. API 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 게시를 선택합니다.

모든 기본 설정을 그대로 두고 게시를 클릭할 수 있습니다. 잠깐, 잠깐, 잠깐, 그리고 브라우저가 열리고 공개 웹사이트가 표시되어야 합니다! 이런!


이제 /swagger로 이동하여 설명서 URL을 클립보드 또는 메모장에 복사합니다. 제 경우에는 다음과 같은 URL이었습니다 http://azureapidemo0955.azurewebsites.net:80/swagger/docs/v1
다음으로, 새 portal.azure.com(미리 보기 포털)에서 이 기능을 사용할 수 없으므로 "이전" Azure 포털(manage.windowsazure.com)로 이동합니다. 새로 만들기 -> 앱 서비스 -> API 관리 -> 만들기를 클릭합니다.

이름, 구독, 지역을 선택하고 다음을 누르십시오.

다음 화면에서 연락처 정보를 입력해야 합니다.

기본 설정(예: 개발자 가격 수준)으로 충분하므로 고급 설정을 지정할 필요가 없습니다. 체크 표시를 눌러 완료합니다.
최대 30분이 소요될 수 있으므로 잠시 동안 다른 작업을 하고 싶을 것입니다. 어쩌면 먹을 것을 잡고 끝나면 다시 오십시오!
Manage the Azure API Management Service
프로비저닝이 준비되면 해당 프로비저닝을 선택하고(제목을 클릭하지 마세요!) 바닥글에서 관리를 클릭합니다. 그러면 Azure API 관리 포털이 열립니다.

Import API(API 가져오기)를 클릭하고 "From URL(URL에서)"을 선택한 다음 세부 정보를 입력합니다.

"무제한" 제품 그룹에 API를 추가했습니다. 어떤 이유로 오류가 발생했습니다.
"구독 키가 누락되어 액세스가 거부되었습니다. API 포털에서 테스트할 때 해당 헤더가 미리 채워지지 않았으므로 API에 요청할 때 구독 키를 포함해야 합니다. Save(저장)를 누르고 헤더에서 Developer Portal(개발자 포털)을 클릭합니다.

지금 보시는 것은 자체 API의 공개 개발자 포털입니다! 이것은 API를 사용하는 모든 사람을 위한 시작점입니다. 사람들은 문서를 읽고, API를 테스트하고, 사용하기 위해 등록할 수 있습니다.
API -> Azure API Demo -> Values_Get – GET 1을 클릭하여 GetAll 메서드를 테스트합니다. 보내기를 누르고 마법이 일어나는 것을 확인하십시오. Azure API 포털은 웹 API를 호출하고 다음 결과를 표시합니다.

이제 기본 사항을 설정했습니다. API는 Azure API Management에서 관리되며, 사용자가 로그인할 수 있는 개발자 포털이 있습니다.
MVC 컨트롤러에서 보호된 API 활용
앞서 만든 프로젝트의 API를 사용하고 제한을 구현할 수 있음을 보여 주겠습니다. 먼저 API에 "Starter" 제품을 추가합니다. Azure API 관리 포털에서 APIs -> AzureApiDemo -> Products를 클릭하고 Starter를 추가합니다.

그런 다음 개발자 포털로 이동하여 관리자 -> 프로필을 클릭합니다. 스타터 구독에 대한 기본 키를 복사합니다.

이 값을 메모장에 복사합니다.
웹 API 프로젝트에는 문서를 렌더링하는 MVC 부분도 포함되어 있습니다. Azure API Management에서 관리하는 API를 호출할 수 있음을 표시하는 몇 가지 코드를 추가하겠습니다.
그런 다음 컨트롤러 -> HomeController를 열고 Index 메서드를 다음으로 바꿉니다.
public ActionResult Index() { ViewBag.Title = "Home Page"; var wr = WebRequest.CreateHttp("https://azureapidemo.azure-api.net/api/Values"); wr.Headers.Add("Ocp-Apim-Subscription-Key", "b690fce8fe4a44a8b42834c1d040cd31"); using (var response = wr.GetResponse()) { var html = new StreamReader(response.GetResponseStream()).ReadToEnd(); ViewBag.WebResponse = html; } return View(); }
구독 키를 이전에 복사한 키로 바꿉니다.
마지막으로 Views -> Home -> Index.cshtml의 뷰에 @ViewBag.WebResponse를 추가합니다.

이제 F5 키를 누르면 Azure 관리 API 서비스를 통해 Web API의 응답이 표시됩니다.
하지만 브라우저를 6 번 새로 고치면 예외가 발생합니다.

이것은 시작에 불과합니다
오늘의 게시물에서는 Azure Management API에 API를 게시하고 사용량 제한을 통해 사용을 보호하는 방법을 보여 주었기를 바랍니다. 그러나 이것은 시작에 불과하며 할 수 있는 일이 훨씬 더 많습니다. 다음은 반드시 살펴봐야 할 몇 가지 추가 기능입니다.

1. Statistics
개발자 포털에서 관리자 -> 관리를 클릭하십시오.
이렇게 하면 관리 포털의 분석 보기로 이동하여 다양한 분석 데이터를 확인할 수 있습니다.

2. 제품
우리는 "Unlimited" 및 "Starter" 제품에 API를 추가하여 이에 대해 간략하게 다루었습니다. 제품은 누가, 얼마나 자주 사용할 수 있는지를 정의합니다. 예를 들어, 기본 그룹 "스타터"를 사용하면 사용자가 최대 100/주까지 최대 5개의 통화를 실행할 수 있습니다.
자세한 내용은 Microsoft 사이트를 참조하십시오.
3. Azure Direct Connect를 사용하여 내부 API에 연결
이 예에서는 API를 공용 Azure Web App에 게시했습니다. 대부분의 경우 API는 내부 네트워크에 상주합니다. Azure ExpressRoute를 사용하면 VPN을 통해 Azure 관리 API에서 API를 사용할 수 있습니다. API는 여전히 외부 세계로부터 숨겨지며 Azure만 액세스할 수 있습니다. 자세한 내용은 여기를 참조하십시오.
또한 Azure 사이트의 고급 설명서에서 더 멋진 예제를 확인하는 것이 좋습니다.
모든 것이 순조롭게 진행되면 오늘 공용 Azure Web App에 API를 게시하는 방법을 배웠을 것이며 적어도 한 잔의 커피와 가벼운 점심을 먹었을 것입니다. 아래 의견 섹션에 연락하여 생각을 공유하십시오!
고성능 컨트롤을 갖춘 데스크톱, 모바일 또는 웹 애플리케이션을 구축하고 싶으신가요? 지금 Ultimate 무료 평가판을 다운로드하고 무엇을 할 수 있는지 확인하십시오!