Azure Functions로 REST API 만들기

Azure Functions에서 REST 같은 WebAPI를 만들고 싶습니다.

REST API의 경우,
  • 0에서 REST API에 대해 알아 보았습니다 - Qiita

  • 에 있는 거리에서.

    예를 들어 일본 주소를 REST API로 생각하면,
    GET https://hoge.com/api/address/23      <-- 愛知県のデータを取得
    GET https://hoge.com/api/address/23/106  <-- 愛知県/名古屋市中区のデータを取得
    
    POST https://hoge.com/api/address/23/112 <-- 愛知県/名古屋市南区のデータを追加
    PUT  https://hoge.com/api/address/23/113 <-- 愛知県/名古屋市守山区のデータを更新
    
    DELETE https://hoge.com/api/address/13   <-- 東京都のデータを削除
    

    라는 느낌이 듭니다. 아, 설명 부족으로 미안 23 는 총무성이 정한 도도부현 코드 , 112시구정촌코드

    이러한 API를 Azure Functions에서 만들고 싶어도 일반 Http Trigger에서는 "동적""다단계"경로를 정의할 수 없습니다.

    Azure Functions 프록시 사용



    이 때 사용할 수 있는 것은 Azure Functions의 프록시(함수 프록시) 기능입니다.
  • Azure Functions에서 프록시 작업 | Microsoft Docs

  • 함수 프록시는 Http Trigger Function 앞에 배치되어 URL과 쿼리 문자열, 요청 메서드 및 응답을 사용자 지정할 수 있습니다. 단지 AWS의 API Gateway에 해당하는 기능이라고 생각됩니다.

    Azure Functions에서도 이러한 기능을 사용하여 묶을 수 있습니다. htps // t. 코/Gr×7yぉ6K preview라고 생각하지만. - Takekazu Omi (@takekazuomi) 2018년 7월 26일


    프록시를 사용해 보자.



    실제로 REST API 같은 쓰기를, 프록시를 사용해 실현해 보겠습니다.



    돈! !





    Functions Apps에 프록시라는 그룹이 있으므로 새 프록시를 만듭니다. 이름 "Proxy01"은 임의의 이름으로, 이것은 외부에 공개되는 URL 에는 영향을 주지 않습니다.



    변수 사용



    루트 템플릿에서, {table} 이나 {*path} 라고 붙이고 있는 것이 변수로, 명칭은 임의입니다.



    {table}/{*path}로 정의하면 호출 된 URL의 경로 요소가 변수에 저장됩니다.



    예를 들면 다음과 같습니다.



    https://hoge.com/rest/address/23  ---> table='address', path='23'
    https://hoge.com/rest/address/23/201  ---> table='address', path='23/201'
    


    라는 느낌으로 변수에 URL 경로가 저장됩니다. 정의로 *path 라고 하면(자), 「거기까지의 패스 캐릭터 라인 모두」가 포함됩니다 ( 23/201 와 같이).



    그리고 이 변수를 다른 위치에서 사용할 수 있습니다. 여기에서는 요청 재정의 항목에서 쿼리 매개 변수로 사용됩니다.



    예를 들어, table : {table} 라는 정의는, 루트 템플릿으로 정의한 {table} 변수를 쿼리 파라미터의 table 에 매핑 한다고 하는 의미입니다.



    {request.method}는 내장 변수로 URL 호출 요청 메소드(예: GET/POST/PUT)를 나타냅니다.



    그리고, 이 프록시의 투과처, 실제의 호출처가 백엔드 URL로 지정된 URL로, 통상은 다른 Http Trigger Function이 된다고 생각합니다(이 UI만 보면, Azure Functions에 한정하지 않고 임의 URL을 지정할 수있는 것 같습니다).



    즉,
    https://hoge.com/rest/address/23/201

    URL이지만 다른 URL
    https://huga.com/MyHttpTrigger?table=address&path=23/201

    로 변환할 수 있다고 볼 수 있습니다.



    그 후에는 백엔드 URL에서 쿼리 문자열을 잘 처리하면 REST 같은 API를 구현할 수 있습니다.

    ( https://hoge.com/api/address/23/112 와 같은 목록의 요소를 직접 보여주는 URL은 path 에 23/112 가 들어가기 때문에이 문자열을 자체적으로 구문 분석해야합니다.)



    Azure Functions의 Http Trigger는 다음과 같이 쿼리 문자열에서 table, method, path 수 있습니다.



    MyHttpTrigger의 index.js



    module.exports = function (context, req) {
        const table = req.query.table || '';
        const method = req.query.method || '';
        const path = req.query.path || '';
    
        context.res = {
            headers: {
                'Content-Type': 'application/json'
            },
            body: `table=${table}, method=${method}, path=${path}`
        };
        context.done();
    };
    

    좋은 웹페이지 즐겨찾기