You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/api-management/visual-studio-code-tutorial.md
+34-29Lines changed: 34 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ ms.service: azure-api-management
5
5
author: dlepow
6
6
ms.author: danlep
7
7
ms.topic: tutorial
8
-
ms.date: 10/17/2023
8
+
ms.date: 11/19/2024
9
9
ms.custom: devdivchpfy22
10
10
---
11
11
@@ -35,24 +35,24 @@ For an introduction to more API Management features, see the API Management tuto
35
35
36
36
## Import an API
37
37
38
-
The following example imports an OpenAPI Specification in JSON format into API Management. Microsoft provides the backend API used in this example, and hosts it on Azure at `https://conferenceapi.azurewebsites.net`.
38
+
The following example imports an OpenAPI Specification in JSON format into API Management. For this example, you import the open source [Petstore API](https://petstore.swagger.io/).
39
39
40
40
1. In Visual Studio Code, select the Azure icon from the Activity Bar.
41
41
1. In the Explorer pane, expand the API Management instance you created.
42
42
1. Right-click **APIs**, and select **Import from OpenAPI Link**.
43
43
1. When prompted, enter the following values:
44
-
1. An **OpenAPI link** for content in JSON format. For this example: `https://conferenceapi.azurewebsites.net?format=json`.
44
+
1. An **OpenAPI link** for content in JSON format. For this example: `https://petstore.swagger.io/v2/swagger.json`.
45
45
46
-
This file specifies the backend service that implements the example API, in this case `https://conferenceapi.azurewebsites.net`. API Management forwards requests to this web service.
47
-
1. An **API name**, such as *demo-conference-api*, that is unique in the API Management instance. This name can contain only letters, number, and hyphens. The first and last characters must be alphanumeric. This name is used in the path to call the API.
46
+
This file specifies the backend service that implements the example API and the operations it supports.
47
+
1. An **API name**, such as *petstore*, that is unique in the API Management instance. This name can contain only letters, number, and hyphens. The first and last characters must be alphanumeric. This name is used in the path to call the API.
48
48
49
49
After the API is imported successfully, it appears in the Explorer pane, and available API operations appear under the **Operations** node.
50
50
51
51
:::image type="content" source="media/visual-studio-code-tutorial/tutorial-api-operations.png" alt-text="Screenshot of imported API in Explorer pane.":::
52
52
53
53
## Edit the API
54
54
55
-
You can edit the API in Visual Studio Code. For example, edit the Resource Manager JSON description of the API in the editor window to remove the **http** protocol used to access the API.
55
+
You can edit the API in Visual Studio Code. For example, edit the Resource Manager JSON description of the API in the editor window to remove the **http** protocol used to access the API, which is highlighted in the following snip:
56
56
57
57
:::image type="content" source="media/visual-studio-code-tutorial/import-demo-api.png" alt-text="Screenshot of editing JSON description in Visual Studio Code.":::
58
58
@@ -62,28 +62,32 @@ To edit the OpenAPI format, right-click the API name in the Explorer pane and se
62
62
63
63
API Management provides [policies](api-management-policies.md) that you can configure for your APIs. Policies are a collection of statements. These statements are run sequentially on the request or response of an API. Policies can be global, which apply to all APIs in your API Management instance, or specific to a product, an API, or an API operation.
64
64
65
-
This section shows how to apply common outbound policies to your API that transform the API response. The policies in this example change response headers and hide original backend URLs that appear in the response body.
65
+
This section shows how to apply common inbound and outbound policies to your API.
66
66
67
-
1. In the Explorer pane, select **Policy** under the *demo-conference-api* that you imported. The policy file opens in the editor window. This file configures policies for all operations in the API.
67
+
1. In the Explorer pane, select **Policy** under the *petstore* API that you imported. The policy file opens in the editor window. This file configures policies for all operations in the API.
68
68
69
-
1. Update the file with the following content in the `<outbound>` element:
* The first `set-header` policy adds a custom response header for demonstration purposes.
84
-
* The second `set-header` policy deletes the **X-Powered-By** header, if it exists. This header can reveal the application framework used in the API backend, and publishers often remove it.
85
-
* The `redirect-content-urls` policy rewrites (masks) links in the response body so that they point to the equivalent links via the API Management gateway.
86
-
88
+
* The `rate-limit` policy in the `inbound` section limits the number of calls to the API to 3 every 15 seconds.
89
+
* The `set-header` policy in the `outbound` section adds a custom response header for demonstration purposes.
90
+
87
91
1. Save the file. If you're prompted, select **Upload** to upload the file to the cloud.
88
92
89
93
## Test the API
@@ -104,8 +108,9 @@ You need a subscription key for your API Management instance to test the importe
104
108
105
109
### Test an API operation
106
110
107
-
1. In the Explorer pane, expand the **Operations** node under the *demo-conference-api* that you imported.
108
-
1. Select an operation such as *GetSpeakers*, and then right-click the operation and select **Test Operation**.
111
+
1. In the Explorer pane, expand the **Operations** node under the *petstore* API that you imported.
112
+
1. Select an operation such as *[GET] Find pet by ID*, and then right-click the operation and select **Test Operation**.
113
+
1. In the editor window, substitute `5` for the `petId` parameter in the request URL.
109
114
1. In the editor window, next to **Ocp-Apim-Subscription-Key**, replace `{{SubscriptionKey}}` with the subscription key that you copied.
110
115
1. Select **Send request**.
111
116
@@ -115,11 +120,11 @@ When the request succeeds, the backend responds with **200 OK** and some data.
115
120
116
121
:::image type="content" source="media/visual-studio-code-tutorial/test-api-policies.png" alt-text="Screenshot of the API test response in Visual Studio Code.":::
117
122
118
-
Notice the following details in the response:
123
+
Notice the following detail in the response:
124
+
125
+
* The `Custom` header is added to the response.
119
126
120
-
* The **Custom** header is added to the response.
121
-
* The **X-Powered-By** header doesn't appear in the response.
122
-
* URLs to the API backend are redirected to the API Management gateway, in this case `https://apim-hello-world.azure-api.net/demo-conference-api`.
127
+
Now test the rate limiting policy. Select **Send request** several times in a row. After sending too many requests in the configured period, you get the `429 Too Many Requests` response.
@@ -56,8 +56,11 @@ The following image of the Azure portal shows an example virtual hub of effectiv
56
56
57
57
:::image type="content" source="./media/configure-virtual-wan/effective-routes.png" alt-text="Screenshot of effective routes in Azure portal.":::
58
58
59
-
> [!IMPORTANT]
60
-
> Azure NetApp Files mount leverages private IP addresses within a delegated [subnet](azure-netapp-files-network-topologies.md#subnets). The specific IP address entry is required, even if a CIDR to which the Azure NetApp Files volume IP address belongs is pointing to the Azure Firewall as its next hop. For example, 10.2.0.5/32 should be listed even though 10.0.0.0/8 is listed with the Azure Firewall as the next hop.
59
+
>[!IMPORTANT]
60
+
> Azure NetApp Files mount leverages private IP addresses within a delegated [subnet](azure-netapp-files-network-topologies.md#subnets). Either the delegated subnet prefix of the Azure NetApp Files volume _or_ a more specific IP address is required, even if a CIDR to which the Azure NetApp Files volume IP address belongs is pointing to the Azure Firewall as its next hop. For example, the subnet prefix 10.2.0.0/24 or 10.2.0.5/32 should be listed even though 10.0.0.0/8 is listed with the Azure Firewall as the next hop.
61
+
62
+
>[!IMPORTANT]
63
+
>If routing intent is enabled on the virtual WAN hub, use either a delegated subnet size prefix or a more specific route with next the hop to Azure Firewall. To accomplish this setting, add a prefix in the **Additional Prefixes** option on Routing Intent.
61
64
62
65
## List Azure NetApp Files volume IP under virtual hub effective routes
Copy file name to clipboardExpand all lines: articles/azure-sql-edge/connect.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,7 +81,7 @@ Because two containers that are running on the same host are on the same Docker
81
81
import pyodbc
82
82
server ='MySQLEdgeContainer'# Replace this with the actual name of your SQL Edge Docker container
83
83
username ='sa'# SQL Server username
84
-
password ='MyStrongestP@ssword'# Replace this with the actual SA password from your deployment
84
+
password ='<password>'# Replace this with the actual SA password from your deployment
85
85
database ='MyEdgeDatabase'# Replace this with the actual database name from your deployment. If you do not have a database created, you can use Master database.
86
86
db_connection_string ="Driver={ODBC Driver 17 for SQL Server};Server="+ server +";Database="+ database +";UID="+ username +";PWD="+ password +";"
@@ -95,7 +95,7 @@ You might want to connect to the instance of Azure SQL Edge from another machine
95
95
import pyodbc
96
96
server ='192.168.2.121,1600'# Replace this with the actual name or IP address of your SQL Edge Docker container
97
97
username ='sa'# SQL Server username
98
-
password ='MyStrongestP@ssword'# Replace this with the actual SA password from your deployment
98
+
password ='<password>'# Replace this with the actual SA password from your deployment
99
99
database ='MyEdgeDatabase'# Replace this with the actual database name from your deployment. If you do not have a database created, you can use Master database.
100
100
db_connection_string ="Driver={ODBC Driver 17 for SQL Server};Server="+ server +";Database="+ database +";UID="+ username +";PWD="+ password +";"
0 commit comments