REST 및 함수 경로
이제 훌륭한 API를 만들었습니다. 많은 작업을 하는 것은 아니지만 어쨌든 만든 것이죠. API를 빌드해본 적 없는 사람이나 그런 말을 할 것입니다.
RESTful API로 마이그레이션
CreateProduct, GetProducts, UpdateProduct 및 DeleteProduct라는 엔드포인트가 있습니다. 그런 식으로 명명된 엔드포인트는 전통적인 API 명명 패턴을 따릅니다. 작업/리소스.
Action/Resource 명명 패턴은 더 작은 API에서는 문제가 없습니다. 그러나 이 시뮬레이션에서 Tailwind Traders는 인터넷 자이언트라는 점을 기억하세요. Products API는 빠르게 규모가 커질 수 있습니다. 예를 들어 “GetProductByIdAndQuantityAndDate”라는 메서드가 있다고 가정해 보겠습니다. 이러한 형식의 메서드 이름은 자세한 정보 표시이지만, 이러한 코드를 사용하는 코드가 복잡해 보일 수 있습니다. 또한 장황한 API 이름을 사용하면 개발자가 프로젝트에서 API를 사용하는 방법을 파악하기 더 어려워집니다.
여러분이 해야 할 일은 이 API를 정리하고 직관적으로 만드는 것입니다. 이를 위해 REST 패턴을 사용합니다.
Azure Functions 경로 및 HTTP 요청 메서드
Azure Functions에서 기본적으로 모든 HTTP 트리거 함수는 GET 및 POST 요청에 응답합니다. 또한 함수에 대한 URL을 "/api" 접두사가 있는 해당 함수의 이름으로 설정합니다. 이동 RESTful 패턴으로 이동하도록 이 두 가지를 모두 구성합니다.
Enterprise 애플리케이션
이 샘플 애플리케이션의 Azure Functions v4 프로그래밍 모델에 있는 API에 대한 HTTP 정의는 ./api/src/index.ts
에 있으며 다음 패턴을 따릅니다.
const { app } = require('@azure/functions');
app.http('FunctionName',{
methods: ['GET', 'POST'],
authLevel: 'anonymous',
route: 'routeName',
handler: handlerFunction
});
처리기 함수는 HTTP 트리거 정의와 분리되어 있습니다. 이를 통해 함수를 정의하는 방법에 있어 많은 유연성을 얻을 수 있습니다. 별도의 파일에서 처리기 함수를 정의하고 이를 index.ts
파일로 가져올 수 있습니다. 이 형식을 사용하면 OpenAPI 또는 Swagger 설명서를 유지 관리하거나 생성하기가 더 쉽습니다.
더 작은 애플리케이션
HTTP 메서드를 지정하는 앱의 메서드를 사용하여 처리기 코드를 app
호출에 직접 통합하면 더 작은 애플리케이션을 효과적으로 제공할 수 있습니다. 여전히 처리기 함수를 분리하거나 코드를 통합할 수 있습니다.
HTTP 메서드와 처리기 함수를 지정하려면 app.get
메서드를 사용합니다.
const { app } = require('@azure/functions');
app.get('FunctionName', handlerFunction);
또 다른 대체 형식은 단일 함수가 있는 함수 앱에 이상적이며 HTTP 메서드를 지정하는 앱의 메서드를 사용하여 처리기 코드를 app
호출에 직접 통합하는 것입니다. 예시:
const { app } = require('@azure/functions');
app.get('helloWorld',{
handler: (request: HttpRequest, context: InvocationContext) => {
return {
status: 200,
body: "Hello World"
}
}
}
경로 매개 변수
경로 매개 변수를 사용하여 매개 변수를 허용하는 경로를 정의할 수도 있습니다. 예를 들어, 다음 코드는 name
매개 변수를 허용하는 경로를 정의합니다.
route: "products"
전체 경로 정의는 다음과 같습니다.
app.http('GetProducts', {
methods: ['GET', 'POST'],
route: 'products', // <- route: /api/products
authLevel: 'anonymous',
handler: GetProducts
});
경로를 지정하면 URL의 api 섹션 뒤에 오는 모든 항목이 변경됩니다. 이전 구성 파일에서 GetProducts 함수에 대한 경로는 이제 http://localhost:7071/api/products
입니다.
경로와 함께 매개 변수를 전달할 수 있습니다. 매개 변수는 {parameterName} 형식을 사용합니다. 즉, id
라는 매개 변수를 product
엔드포인트에 전달하려면 다음 경로를 지정해야 합니다.
route: "products/{id}"
REST에 대한 새로운 지식과 Azure Functions에서 REST를 구현하는 방법에 대한 정보로 이제 까다로운 해당 Products API를 RESTful로 만들 수 있습니다. 바로 다음 연습에서 수행할 작업입니다.