Azure Function을 이용하여 REST API만들기

들어가며

본 포스팅에서는 Azure Function의 HTTP Trigger를 이용하여 Todo REST API를 구현하는 방법에 대해서 알아보겠습니다.

먼저 REST API에 대해서 간단히 이야기하겠습니다. REST(Representational State Transfer) API는 특정 URL(Uniform Resource Locator)를 통해 자원(Resource)를 표현하고, HTTP 메소드(POST, GET, PUT, DELETE)를 이용하여 해당 자원에 대한 CRUD(Create, Read, Update, Delete) 연산을 처리합니다.

아래 예제에서는 클라이언트로부터 HTTP 요청을 받으면 Todo 데이터를 JSON 형태로 처리합니다. 각각의 HTTP Method에 대한 설명은 다음과 같습니다.

  • POST 메서드를 이용해 새로운 ‘todo’ 항목을 생성(Create)합니다.
  • GET 메서드를 이용해 ‘todo’ 항목을 조회(Read)합니다. 특정 ID를 가진 항목을 조회할 수도 있고, 모든 항목을 조회할 수도 있습니다.
  • PUT 메서드를 이용해 ‘todo’ 항목을 수정(Update)합니다. 특정 ID를 가진 항목의 정보를 수정할 수 있습니다.
  • DELETE 메서드를 이용해 ‘todo’ 항목을 삭제(Delete)합니다. 특정 ID를 가진 항목을 삭제할 수 있습니다.

준비사항
  • Visual Studio
  • Postman
  • Azure Cloud Subscription

개발순서

1. 프로젝트를 생성하고, Visual Studio를 실행합니다.

2. Azure Plugin 에서 Azure Function을 생성합니다.

프로젝트를 생성할 폴더를 선택합니다.

Python을 선택합니다.

HTTP Trigger를 선택합니다.

HTTP Trigger 이름은 todos로 합니다.

Authorization level은 Anoymous로 선택합니다.

Code Explorer로 오면 다음과 같이 코드가 생성된 것을 확인 할 수 있습니다.

3. function.json에서 methods, router를 다음과 같이 변경해줍니다.

4. REST API에 쓰일 데이터를 data.json에 추가해줍니다.

5. __init__.py 코드를 다음과 같이 변경합니다.

  • POST method
  • GET method
  • PUT method
  • DELETE method

6. 로컬에서 디버깅으로 실행 뒤 Postman을 이용해서 테스트합니다.

  • 실행시 터미널에서 다음과 같은 값을 확인 할 수 있습니다.
  • GET method 테스트
  • POST method 테스트
  • PUT method 테스트

7. 배포하기 위해 Azure에 Function App을 생성합니다.

  • Function App에서 오른쪽 버튼 클릭후 Create Function for Azure…를 클릭합니다.
  • Function App 이름을 지정합니다.
  • Runtime stack을 선택합니다.
  • Region을 선택합니다.
  • Function App이 정상적으로 설치되면 터미널에서 아래와 같은 메시지를 확인할 수 있습니다.

8. Function App 배포

  • Azure 에 생성한 Function App을 선택 후 오른쪽 버튼을 클릭 후 Deploy to function App…을 클릭합니다.
  • Postman을 이용하여 GET method를 호출합니다. 정상적으로 동작하는 것을 확인 할 수 있습니다.
  • POST method를 테스트 할 경우 500 Server error가 나는 것을 확인 할 수 있습니다.
  • Azure Portal -> Functions -> todos를 선택한 뒤, Monitor를 클릭해보면 실행된 function 정보가 나옵니다. 여기에서 실패한 function의 정보를 보면 Failure Exception: OS Error; [Errno 30] Read-only file system.이란 메시지를 확인 할 수 있습니다.
  • Azure Cloud 에 data.json 파일이 저장된 곳은 read only 라서 파일을 업데이틀 할 수 없어 위와 같은 에러가 발생합니다.

코드
참고자료

Leave a Comment