Azure Functions로 REST API 만들기
REST API의 경우,
에 있는 거리에서.
예를 들어 일본 주소를 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의 프록시(함수 프록시) 기능입니다.
함수 프록시는 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();
};
Reference
이 문제에 관하여(Azure Functions로 REST API 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/amay077/items/46ad2c8aa114bdf53abb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)