Created by: justinjxzhang
The parameter named in a route must have the same name as the variable for an Azure Function HttpTrigger, otherwise it won't bind properly. The current master csharp-netcore-functions generator will will camelize the bound parameter but leave the parameter in the path as snake_case.
Also resolves an issue when a base server URL is provided with a forward-slash going missing.
For example, given the following schema:
openapi: 3.0.0
info:
description: Example underscored path
title: Underscore Path Parameter example
version: 1.0.0
servers:
- url: /api/v1
paths:
/accounts/{account_id}:
get:
parameters:
- description: Get by ID
name: account_id
in: path
required: true
schema:
type: string
responses:
200:
description: Eerything OK
content:
application/json:
schema:
type: object
The csharp-netcore-functions generator would produce:
public partial class DefaultApi
{
[FunctionName("DefaultApi_AccountsAccountIdGet")]
public async Task<IActionResult> _AccountsAccountIdGet([HttpTrigger(AuthorizationLevel.Anonymous, "Get", Route = "api/v1accounts/{account_id}")]HttpRequest req, ExecutionContext context, string accountId)
{
var method = this.GetType().GetMethod("AccountsAccountIdGet");
return method != null
? (await ((Task<IActionResult>)method.Invoke(this, new object[] { req, context, accountId })).ConfigureAwait(false))
: new StatusCodeResult((int)HttpStatusCode.NotImplemented);
}
}
PR checklist
-
Read the contribution guidelines. -
Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community. -
Run the following to build the project and update samples: Commit all changed files. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example./mvnw clean package ./bin/generate-samples.sh ./bin/utils/export_docs_generators.sh./bin/generate-samples.sh bin/configs/java*. For Windows users, please run the script in Git BASH. -
If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.