Introduction
Azure Functions is a solution for easily running small pieces of code, or "functions", in the cloud. You can write just the code you need for the problem at hand, without worrying about a whole application or the infrastructure to run it. Details of the features of the Functions app are available at this
link.
Features
Choice of language - You can choose your preferred programming language like C#, F# or JavaScript and see a link for more information for supported languages (With batch files, it can run anything).
Pay-per-use pricing model - You only pay for the time your code runs.
Bring your own dependencies - It supports NuGet and NPM, so you can use your favorite libraries.
Integrated security - Protect HTTP-triggered functions with OAuth providers such as Azure Active Directory, Facebook, Google, Twitter, and Microsoft Account.
Simplified integration - Azure Functions integrates with various Azure and third-party services. These services can trigger your function and start execution, or they can serve as input and output for your code. The following service integrations are supported by Azure Functions.
Flexible development - Code your functions right in the portal or set up continuous integration and deploy your code through GitHub, Azure DevOps Services, and other supported development tools.
Open-source - The function runtime is open-source
Monitoring - Through application insights, we can monitor the function apps.
Server less Architecture - Microsoft Azure Functions acts as a modern serverless architecture delivering event-driven cloud computing configured to comply with application development.
Now let’s create an Http-triggered Azure function App in Visual Studio.
About Http Triggered Function Apps
For HTTP-triggered functions, you can specify the authorization types needed to have in order to execute it. There are five types you can choose from the below list. Keep in mind, when running the Azure Functions locally, the authorization attribute is ignored, and you can call any function no matter which level is specified. These authorizations will works only after publishing the code in Azure. It can receive request data via query string parameters, request body data or URL route templates. Like other functions, they can also integrate with other Azure services such as Blob Storage, Event Hubs, queues and so on.
Authorization Types
- Function
- Anonymous
- Admin
- System
- User
Function
Function, Admin & System authorization levels are key based.
Anonymous
If you want a function to be accessed by anyone, the following piece of code will work, because the authorization is set to Anonymous.
Admin
Admin authorization level requires a host key for authorization. Passing a function key will fail authorization and return an HTTP 401 – Unauthorized error code.
Create an Azure function app in Visual Studio
In Visual Studio:
Create a project by selecting File > New > Project
Select Visual C# > Cloud > Azure Functions
Click Ok
Select HttpTrigger and Access rights > Admin,
Input Data
- {
- "userName": "[email protected]",
- "password": "password",
- "Employees": "{\r\n \"MethodName\": \"CheckMethod\",\r\n \"entities\": [],\r\n \"text\": \"testword\",\r\n \"isActive\": false\r\n}",
- "IsCheck": "true"
- }
Now, I’ll create class file with name of CommonReturnType to read the input data.
Now, open commonreturntype class file.
and keep the JSON data content on the clipboardd (copy input JSON data).
Go to Edit > Paste Special > Select Paste JSON as Classes.
Then, an auto generated class will be retrieved as per the JSON data.
Next
Develop the code as per our requirement.
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Threading.Tasks;
- using Microsoft.Azure.WebJobs;
- using Microsoft.Azure.WebJobs.Extensions.Http;
- using Microsoft.Azure.WebJobs.Host;
- using Newtonsoft.Json;
- namespace FunctionApp1 {
- public static class Function1 {
- [FunctionName("MyFirstFunction")]
- public static async Task < HttpResponseMessage > Run([HttpTrigger(AuthorizationLevel.Admin, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log) {
- log.Info("C# HTTP trigger function processed a request.");
- string jsonContent = await req.Content.ReadAsStringAsync();
- if (jsonContent != "") {
-
- CommonReturnType fdata = JsonConvert.DeserializeObject < CommonReturnType > (jsonContent);
- string inputMessageJSON = fdata.Employees;
- Employees msg = JsonConvert.DeserializeObject < Employees > (inputMessageJSON);
-
- if (msg.MethodName == "CheckMethod" && fdata.IsCheck == "true") {
- string swin = msg.text;
- switch (swin.ToLower()) {
- case "something":
- msg.text = "How are you today";
- fdata.IsCheck = "true";
- break;
- case "something1":
- msg.text = "Good Bye";
- fdata.IsCheck = "false";
- break;
- default:
- msg.text = "Hi. How may I help you today..!";
- fdata.IsCheck = "true";
- break;
- }
- fdata.Employees = JsonConvert.SerializeObject(msg, Formatting.Indented);
- return req.CreateResponse(HttpStatusCode.OK, fdata);
- }
- }
- return req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body");
- }
- }
- }
Execute the code.
And test the below URL in Postman App: http://localhost:7071/api/MyFirstFunction
If you want to publish this Azure Function in the cloud, publish this code in the Azure cloud by using credentials and publish file.
Azure URL Example
To execute this function app in Azure, you have to mention the secret key in the URL.
Example URL
http://mysite.azurewebsites.net/api/MyFirstFunction?code=MySecretCodehere
Happy coding.