swagger non visualizza le chiamate che iniziano con un parametro path

ho incontrato che quando si ha un percorso di un percorso con un parametro percorso all’inizio, questo metodo non è stato visualizzato quando si accede swagger tramite swagger-ui.

esempio: esempio:

[Route("/{Version}/userdata", "GET")]
public class UserData
{
 //...
}

sto anche usando percorsi come /v1/getSomeData e /v2/getSomeOtherData che vengono visualizzati correttamente nel swagger-ui. ma ci dovrebbero essere anche alcuni metodi che possono avere diverse versioni (v1 / v2) a cui accedo tramite la variabile path all’inizio del percorso.

è possibile con spavalderia? naturalmente ho anche bisogno di visualizzare 2 metodi per il /{Version}/userdata dal momento che ogni versione ha una risposta diversa, ecc.

EN From: swagger does not display calls which start with a path parameter

More similar articles:

15 Comments

    1. sì, lo so. quello con il percorso letterale come /v1/somerequest sono perfettamente raggruppati. qualsiasi lavoro su come ottengo quello con un parametro da visualizzare senza rompere nulla?

  1. swagger è un formato di specifica del punto finale che utilizza json o YAML. è quindi possibile definire il punto finale utilizzando le specifiche dei file swagger. vedi la mia risposta

  2. la definizione di swagger 2.0 specifica per il vostro endpoint sarà qualcosa come la seguente:

    {
        "paths":{
            "/{Version}/userdata":{
                "get":{
                    "produces":[
                        "application/json",
                        "text/json"
                    ],
                    "parameters":[
                        {
                            "name":"Version",
                            "in":"path",
                            "required":true,
                            "type":"string"
                        }
                    ],
                    "responses":{
                        "200":{
                            "description":"OK"
                        },
                        etc...
                    }
                }
            }
        }
    }

    quindi non c’è nulla di intrinsecamente impossibile nel definire il punto finale /{Version}/userdata usando la specifica swagger.

    tuttavia, il Service Stack spavalderia generazione di utensili supporta solo il swagger 1.2 spec. secondo @mythz, che è il vantaggio tecnico sul Service Stack, quello che si vuole fare è non supportato utilizzando le attrezzature esistenti.

    se questo è il caso, e si richiede sicuramente una definizione swagger per il vostro servizio, allora si può fare uno di:

    1. cambiare la rotta del punto finale a qualcosa che l’attrezzatura supporta
    2. creare manualmente la definizione di swagger
    3. cambia la tua attrezzatura

    nella vostra situazione, penso che la cosa migliore da fare sarebbe quella di cambiare il percorso del punto finale in modo che l’attrezzatura esistente può generare la definizione. questo significa rimuovere il parametro path.

    se non si può fare questo allora vorrei creare un swagger 2.0 definizione manualmente. se avete bisogno di aiuto per favore fatemi sapere.

    1. @mythz – anche io non ho familiarità con il verbo “generare” quando applicato a swagger. swagger è un formato di specifiche api, non genera nulla lo fa?

    2. non ottenere appeso su di esso, Swagger specifiche sono spesso generati come è il caso con ServiceStack che questa domanda è di circa
    3. @zlZimon – in questo contesto, “servizio” si riferisce alla vostra operazione di servizio, che è un GET HTTP contro una risorsa chiamata UserData. “tooling” si riferisce allo strumento che si utilizza per generare il swagger, nel vostro caso lo strumento API swagger fornito dalla pila di servizio. la definizione di swagger prodotta in questo modo è conforme alla specifica swagger 1.2, che non supporta il vostro requisito. tuttavia, la mia risposta è conforme con swagger 2.0 spec, che supporta il vostro requisito.

Leave a Reply

Your email address will not be published. Required fields are marked *