Code Monkey home page Code Monkey logo

Comments (7)

justinyoo avatar justinyoo commented on June 12, 2024 1

Fixed

from azurefunctions.extensions.

justinyoo avatar justinyoo commented on June 12, 2024

@SplitThePotJohan Thanks for the issue! Would you be able to share codes, if you don't mind? I'm not sure I understood this issue.

from azurefunctions.extensions.

SplitThePotJohan avatar SplitThePotJohan commented on June 12, 2024

I cant share my code right now, but I can walk you through it.

Create a function like this: (note: simplified method body)

        [FunctionName("GetProduct")]
        [OpenApiOperation("get", "product")]
        [OpenApiParameter("category", In = ParameterLocation.Path, Required = true, Type = typeof(string))]
        [OpenApiParameter("id", In = ParameterLocation.Path, Required = true, Type = typeof(int))]
        [OpenApiResponseBody(HttpStatusCode.OK, "application/json", typeof(object))]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "{category:regex(^[A-Z]{{3,}}$)}/product/{id:int}")] HttpRequest req,
            string category,
            int id,
            ILogger log)
        {
			return new JsonResult(new { category, id });
	}

Then I used your sample to setup OpenApi/Swagger.
E.g. RenderOpenApiDocument-method and RenderSwaggerUI-method

When I run the SwaggerUI, the route displays as GET /api/{category:regex(^[A-Z]{{3,}}$)}/product/{id:int} and a similar route using for instance Swashbuckle (not an Azure Fn api method) would display GET /api/{category}/product/{id}.

I can live with that, it doesnt matter how the UI looks, but when I use "Try it out" I see that the values I submitted are not replaced in the actual call.

CURL
curl -X GET "http://localhost:7071/api/{category:regex(^[A-Z]{{3,}}$)}/product/{id:int}" -H "accept: application/json"

Request URL
http://localhost:7071/api/{category:regex(^[A-Z]{{3,}}$)}/product/{id:int}

And this requested url is not the intended (and results in a 404 error, of course)

Hope this explaination helps you understand my issue.

from azurefunctions.extensions.

justinyoo avatar justinyoo commented on June 12, 2024

@SplitThePotJohan Thanks for the elaboration! Let me take some time to have a look and get back to you. Unfortunately, I've got full capacity for other personal priorities, I'm afraid I can't take this sooner.

from azurefunctions.extensions.

justinyoo avatar justinyoo commented on June 12, 2024

@SplitThePotJohan was able to reproduce this on my side.

Basically, for this defect, if the UI replaces:

{category:regex(^[A-Z]{{3,}}$)}/product/{id:int}

with

{category}/product/{id}

it would solve this issue. Do you think it's OK?

from azurefunctions.extensions.

SplitThePotJohan avatar SplitThePotJohan commented on June 12, 2024

@justinyoo yes, I think that would solve the issue.
I suppose this change will enable the functionality for "Try it out" to work as expected?
And of course the same fix should be applied for the generation of e.g swagger.json

from azurefunctions.extensions.

justinyoo avatar justinyoo commented on June 12, 2024

@SplitThePotJohan Yes, that's the plan. I've made some changes for this, and it's staying at the feature/15-route-constraint branch. You can try it, if you like. It needs more polish-up, though.

from azurefunctions.extensions.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.