Bird
Raised Fist0
Azurecloud~5 mins

Functions with HTTP triggers in Azure - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Sometimes you want your code to run when someone visits a web address or sends a web request. Azure Functions with HTTP triggers let you do this easily without managing servers.
When you want to run a small piece of code in response to a web request without setting up a full web server
When you need to create a simple API endpoint for your app or website
When you want to process form submissions or webhooks from other services
When you want to quickly test or prototype a web service without complex infrastructure
When you want to run code on demand triggered by HTTP calls from other applications
Config File - function.json
function.json
{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["get", "post"]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
}

This file tells Azure that the function should start when it receives an HTTP request.

authLevel: Controls who can call the function. 'function' means a key is needed.

type: 'httpTrigger' means the function starts on HTTP requests.

methods: Lists allowed HTTP methods like GET and POST.

name: Variable names for input request and output response.

Commands
Create a new Azure Functions project using Python runtime to hold your functions.
Terminal
func init MyHttpFunctionProj --worker-runtime python
Expected OutputExpected
Creating new project in current directory... Writing host.json Writing local.settings.json Writing requirements.txt Writing .gitignore Project created successfully.
--worker-runtime - Specifies the language runtime for the function app
Add a new function named HttpExample triggered by HTTP requests with function-level authorization.
Terminal
func new --name HttpExample --template "HTTP trigger" --authlevel function
Expected OutputExpected
Function created successfully. Writing function.json Writing __init__.py Writing sample.dat
--template - Selects the function template to use
--authlevel - Sets the authorization level for the HTTP trigger
Run the function app locally so you can test the HTTP trigger on your machine.
Terminal
func start
Expected OutputExpected
Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample For detailed output, run func with --verbose flag.
Send an HTTP GET request to the function with a query parameter to see the response.
Terminal
curl http://localhost:7071/api/HttpExample?name=Azure
Expected OutputExpected
{"message": "Hello, Azure"}
Key Concept

If you remember nothing else from this pattern, remember: Azure Functions with HTTP triggers let you run code instantly when someone sends a web request, without managing servers.

Common Mistakes
Not setting the correct authorization level in function.json or when creating the function
The function may reject requests or be open to everyone unexpectedly
Set authLevel to 'function' or 'anonymous' explicitly depending on your security needs
Forgetting to run 'func start' before testing the function locally
The function app is not running, so HTTP requests fail
Always start the function app with 'func start' to test locally
Using the wrong HTTP method (e.g., POST instead of GET) when calling the function
The function only listens to specified methods and will ignore others
Check the allowed methods in function.json and use one of them
Summary
Initialize a new Azure Functions project with 'func init' specifying the runtime.
Create a new HTTP-triggered function with 'func new' and set authorization level.
Run the function app locally using 'func start' to test your function.
Send HTTP requests to the function URL to trigger your code and get responses.

Practice

(1/5)
1. What does an HTTP trigger do in an Azure Function?
easy
A. It stores data for the function to use later.
B. It runs the function when it receives a web request.
C. It schedules the function to run at specific times.
D. It sends emails automatically when triggered.

Solution

  1. Step 1: Understand the role of HTTP triggers

    HTTP triggers start a function when a web request is received.
  2. Step 2: Compare with other triggers

    Other triggers like timers schedule functions, but HTTP triggers respond to web calls.
  3. Final Answer:

    It runs the function when it receives a web request. -> Option B
  4. Quick Check:

    HTTP trigger = runs on web request [OK]
Hint: HTTP trigger means function runs on web request [OK]
Common Mistakes:
  • Confusing HTTP trigger with timer trigger
  • Thinking HTTP trigger stores data
  • Assuming HTTP trigger sends emails
2. Which of the following is the correct way to define an HTTP trigger in an Azure Function's function.json file?
easy
A. "bindings": [{ "type": "httpTrigger", "direction": "in", "authLevel": "function", "methods": ["get"] }]
B. "bindings": [{ "type": "timerTrigger", "direction": "in", "schedule": "0 */5 * * * *" }]
C. "bindings": [{ "type": "blobTrigger", "direction": "in", "path": "samples-workitems/{name}" }]
D. "bindings": [{ "type": "queueTrigger", "direction": "in", "queueName": "myqueue-items" }]

Solution

  1. Step 1: Identify HTTP trigger binding

    The correct binding type for HTTP trigger is "httpTrigger" with direction "in".
  2. Step 2: Check authLevel and methods

    authLevel "function" and methods ["get"] are valid properties for HTTP triggers.
  3. Final Answer:

    "bindings": [{ "type": "httpTrigger", "direction": "in", "authLevel": "function", "methods": ["get"] }] -> Option A
  4. Quick Check:

    HTTP trigger binding = type "httpTrigger" [OK]
Hint: HTTP trigger binding uses type "httpTrigger" in function.json [OK]
Common Mistakes:
  • Using timerTrigger or blobTrigger instead of httpTrigger
  • Missing authLevel property
  • Wrong direction value
3. Given this Azure Function code snippet, what will be the HTTP response body when a GET request is sent?
import logging
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
    name = req.params.get('name')
    if not name:
        return func.HttpResponse("Please pass a name", status_code=400)
    return func.HttpResponse(f"Hello, {name}!")
medium
A. Hello, Alice!
B. Hello, World!
C. Error 404 Not Found
D. Please pass a name

Solution

  1. Step 1: Check request parameter handling

    The function looks for 'name' in query parameters. If missing, it returns a 400 response with message "Please pass a name".
  2. Step 2: Analyze given request

    The question states a GET request is sent but does not mention a 'name' parameter, so name will be None.
  3. Final Answer:

    Please pass a name -> Option D
  4. Quick Check:

    No name param = "Please pass a name" response [OK]
Hint: If no 'name' param, function returns error message [OK]
Common Mistakes:
  • Assuming default name is 'Alice' or 'World'
  • Ignoring the 400 status code response
  • Confusing request body with query parameters
4. You have this function.json snippet for an HTTP triggered Azure Function:
{
  "bindings": [
    {
      "type": "httpTrigger",
      "direction": "in",
      "authLevel": "anonymous",
      "methods": ["post"]
    },
    {
      "type": "httpTrigger",
      "direction": "out"
    }
  ]
}

What is the error in this configuration?
medium
A. The output binding type should be "http" not "httpTrigger".
B. The output binding type "http" is invalid; it should be "httpResponse".
C. The output binding type "http" is invalid; it should be "httpTrigger".
D. The output binding type should be "http" with direction "in".

Solution

  1. Step 1: Review input and output bindings

    The input binding uses "httpTrigger" which is correct for HTTP triggers.
  2. Step 2: Identify output binding error

    The output binding incorrectly uses "httpTrigger"; it should be "http" with direction "out" for HTTP responses.
  3. Final Answer:

    The output binding type should be "http" not "httpTrigger". -> Option A
  4. Quick Check:

    HTTP output binding = type "http" [OK]
Hint: HTTP output binding uses type "http", not "httpTrigger" [OK]
Common Mistakes:
  • Using "httpTrigger" as output binding type incorrectly
  • Confusing input and output binding types
  • Setting wrong direction for output binding
5. You want to create an Azure Function with an HTTP trigger that only allows calls with a function key (authLevel set to "function") and responds with JSON containing a greeting message using the "name" query parameter and returns a JSON error message if the "name" query parameter is missing. Which of the following code snippets correctly implements this behavior?
hard
A. import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: name = req.params.get('name') if not name: return func.HttpResponse('Missing name', status_code=400) return func.HttpResponse(f'{"message": "Hello, {name}!"}', mimetype='application/json')
B. import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: name = req.get_json().get('name') if not name: return func.HttpResponse('Missing name', status_code=400) return func.HttpResponse(f'Hello, {name}!')
C. import azure.functions as func import json def main(req: func.HttpRequest) -> func.HttpResponse: name = req.params.get('name') if not name: return func.HttpResponse(json.dumps({'error': 'Missing name'}), status_code=400, mimetype='application/json') return func.HttpResponse(json.dumps({'message': f'Hello, {name}!'}), mimetype='application/json')
D. import azure.functions as func import json def main(req: func.HttpRequest) -> func.HttpResponse: name = req.params.get('name') return func.HttpResponse(json.dumps({'message': f'Hello, {name}!'}), mimetype='text/plain')

Solution

  1. Step 1: Check authLevel and input handling

    authLevel "function" is set in function.json (not shown), so code must handle query param 'name' safely.
  2. Step 2: Validate JSON response and error handling

    import azure.functions as func import json def main(req: func.HttpRequest) -> func.HttpResponse: name = req.params.get('name') if not name: return func.HttpResponse(json.dumps({'error': 'Missing name'}), status_code=400, mimetype='application/json') return func.HttpResponse(json.dumps({'message': f'Hello, {name}!'}), mimetype='application/json') uses json.dumps to create proper JSON for both error ({'error': 'Missing name'}) and success ({'message': f'Hello, {name}!'}), with mimetype='application/json' and status_code=400 for errors.
  3. Step 3: Compare other options

    A returns plain text error and f-string JSON-like string; C uses get_json() instead of params; D uses text/plain mimetype.
  4. Final Answer:

    Uses json.dumps and mimetype='application/json' for both success and error JSON responses. -> Option C
  5. Quick Check:

    json.dumps for JSON error and success with application/json mimetype [OK]
Hint: Use json.dumps and mimetype 'application/json' for JSON responses [OK]
Common Mistakes:
  • Returning JSON as plain string without json.dumps
  • Using wrong mimetype for JSON
  • Reading JSON body instead of query parameters