개발자 프록시를 사용하면 빌드하지 않고도 CRUD API 시뮬레이션할 수 있습니다. 개발자 프록시를 사용하여 API를 시뮬레이션하면 시간을 절약하고 개발 속도를 높일 수 있습니다. 클라우드 서비스와 API를 통합하는 경우 클라우드 서비스에서 액세스할 수 있도록 인터넷을 통해 API를 노출해야 합니다. 인터넷을 통해 Dev Proxy에서 시뮬레이션된 CRUD API를 노출하려면 Dev Tunnels사용합니다. 이 문서에서는 Dev Tunnels를 사용하여 인터넷을 통해 노출되도록 CRUD API를 구성하는 방법을 설명합니다.
팁
이 문서의 CRUD API는 Northwind 데이터베이스 개발자 프록시 샘플기반으로 합니다.
인터넷을 통해 노출되도록 CRUD API 구성
인터넷을 통해 개발자 프록시에 의해 시뮬레이션된 CRUD API를 노출하려면 먼저 CRUD API를 구성합니다.
중요하다
현재는 Dev Tunnels를 사용하여 인터넷을 통해서만 HTTP CRUD API를 노출할 수 있습니다.
CRUD API 데이터 정의
CRUD API를 백업하는 orders-data.json데이터 파일을 만듭니다. 예를 들면 다음과 같습니다.
[
{
"OrderID": 10248,
"CustomerID": "VINET",
"EmployeeID": 5,
"OrderDate": "1996-07-04T00:00:00",
"RequiredDate": "1996-08-01T00:00:00",
"ShippedDate": "1996-07-16T00:00:00",
"ShipVia": 3,
"Freight": 32.38,
"ShipName": "Vins et alcools Chevalier",
"ShipAddress": "59 rue de l'Abbaye",
"ShipCity": "Reims",
"ShipPostalCode": "51100",
"ShipCountry": "France"
},
{
"OrderID": 10249,
"CustomerID": "TOMSP",
"EmployeeID": 6,
"OrderDate": "1996-07-05T00:00:00",
"RequiredDate": "1996-08-16T00:00:00",
"ShippedDate": "1996-07-10T00:00:00",
"ShipVia": 1,
"Freight": 11.61,
"ShipName": "Toms Spezialitäten",
"ShipAddress": "Luisenstr. 48",
"ShipCity": "Münster",
"ShipPostalCode": "44087",
"ShipCountry": "Germany"
}
]
CRUD API 구성
다음으로 CRUD API URL, 해당 작업 및 데이터 파일을 지정하는 orders-api.json이라는 API 구성 파일을 만듭니다.
baseUrl 속성에 HTTP URL을 지정해야 합니다.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "http://api.northwind.com/orders",
"auth": "none",
"dataFile": "orders-data.json",
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{order-id}",
"query": "$.[?(@.OrderID == {order-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{order-id}",
"query": "$.[?(@.OrderID == {order-id})]"
},
{
"action": "delete",
"url": "/{order-id}",
"query": "$.[?(@.OrderID == {order-id})]"
}
]
}
개발 프록시 구성 정의
다음으로, CrudApiPlugin이 활성화된 devproxyrc.json 이름의 개발자 프록시 구성 파일을 만듭니다. CRUD API에 대해 구성한 URL을 수신 대기하도록 개발 프록시를 구성합니다.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
"plugins": [
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "ordersApi"
}
],
"urlsToWatch": [
"http://api.northwind.com/*"
],
"ordersApi": {
"apiFile": "orders-api.json"
}
}
구성 확인
개발 프록시를 실행하고 CRUD API에 요청을 전송하여 CRUD API가 제대로 작동하는지 확인합니다.
현재 작업 디렉터리의 devproxyrc.json 파일에 개발 프록시 구성을 저장했다고 가정하고 개발 프록시를 시작합니다.
devproxy
curl을 사용하여 CRUD API를 호출합니다.
$ curl -x http://127.0.0.1:8000 http://api.northwind.com/orders
[
{
"OrderID": 10248,
"CustomerID": "VINET",
"EmployeeID": 5,
"OrderDate": "1996-07-04T00:00:00",
"RequiredDate": "1996-08-01T00:00:00",
"ShippedDate": "1996-07-16T00:00:00",
"ShipVia": 3,
"Freight": 32.38,
"ShipName": "Vins et alcools Chevalier",
"ShipAddress": "59 rue de l'Abbaye",
"ShipCity": "Reims",
"ShipPostalCode": "51100",
"ShipCountry": "France"
},
{
"OrderID": 10249,
"CustomerID": "TOMSP",
"EmployeeID": 6,
"OrderDate": "1996-07-05T00:00:00",
"RequiredDate": "1996-08-16T00:00:00",
"ShippedDate": "1996-07-10T00:00:00",
"ShipVia": 1,
"Freight": 11.61,
"ShipName": "Toms Spezialitäten",
"ShipAddress": "Luisenstr. 48",
"ShipCity": "Münster",
"ShipPostalCode": "44087",
"ShipCountry": "Germany"
}
]
인터넷을 통해 CRUD API 노출
인터넷을 통해 CRUD API를 노출하려면 개발 프록시 포트에 매핑된 개발 터널을 시작합니다. CRUD API에 대해 구성된 호스트 이름을 사용하도록 터널을 구성합니다.
경고
개발 터널에 대한 익명 액세스를 허용한다는 것은 인터넷의 모든 사용자가 개발 터널 ID를 추측할 수 있는 경우 로컬 서버에 연결할 수 있음을 의미합니다.
$ devtunnel host -p 8000 -a --host-header api.northwind.com
Hosting port: 8000
Connect via browser: https://vpfm55qw.euw.devtunnels.ms:8000, https://vpfm55qw-8000.euw.devtunnels.ms
Inspect network activity: https://vpfm55qw-8000-inspect.euw.devtunnels.ms
Ready to accept connections for tunnel: vpfm55qw
개발 프록시가 curl을 사용하여 개발 터널을 통해 시뮬레이션하는 CRUD API를 호출합니다.
$ curl https://vpfm55qw-8000.euw.devtunnels.ms/orders
[
{
"OrderID": 10248,
"CustomerID": "VINET",
"EmployeeID": 5,
"OrderDate": "1996-07-04T00:00:00",
"RequiredDate": "1996-08-01T00:00:00",
"ShippedDate": "1996-07-16T00:00:00",
"ShipVia": 3,
"Freight": 32.38,
"ShipName": "Vins et alcools Chevalier",
"ShipAddress": "59 rue de l'Abbaye",
"ShipCity": "Reims",
"ShipPostalCode": "51100",
"ShipCountry": "France"
},
{
"OrderID": 10249,
"CustomerID": "TOMSP",
"EmployeeID": 6,
"OrderDate": "1996-07-05T00:00:00",
"RequiredDate": "1996-08-16T00:00:00",
"ShippedDate": "1996-07-10T00:00:00",
"ShipVia": 1,
"Freight": 11.61,
"ShipName": "Toms Spezialitäten",
"ShipAddress": "Luisenstr. 48",
"ShipCity": "Münster",
"ShipPostalCode": "44087",
"ShipCountry": "Germany"
}
]
Dev Proxy