by Anonymous » 13 Apr 2025, 21:48
Swagger generiert eine falsche URL, wenn das aus der Abfragezeichenfolge extrahierte Modell ein Wörterbuch als eine seiner Eigenschaften hat. Wie kann man Swagger sagen, dass sie das Format des Wörterbuchs in der URL
ändern oder das Schema für Eingabeparameter manuell ohne Auto-Generation definieren soll? Versucht, Swashbuckle und NSWAG zu verwenden. < /P>
Controller: < /p>
Code: Select all
public class RecordsController : ControllerBase
{
[HttpGet]
[Route("services/records")]
public async Task Records([FromQuery] QueryModel queryModel)
{
return null;
}
}
< /code>
Eingabemodell - Abfragezeichenfolge: < /p>
public class QueryModel
{
public int Page { get; set; }
public int Count { get; set; }
public Dictionary Conditions { get; set; }
}
< /code>
Swagger UI zeigt dieses Format für die Eigenschaft "Bedingungen" auf Abfragemodell: < /p>
{
"UserId": "string",
"GroupId": "string",
"RecordId": "string"
}
< /code>
Swagger generierte URL - Öffnen Sie API V2 - Es ist nicht an "Bedingungen" gebunden < /p>
/services/records?Page=0&Count=5&Conditions={"UserId":"1"}
< /code>
Swagger generierte URL - Öffnen Sie API v3 - Es ist nicht an "Bedingungen" gebunden < /p>
/services/records?Page=0&Count=5&UserId=1
Benutzerdefinierte URL - funktioniert wie erwartet "Bedingungen" mit {"userId", "1"}
Code: Select all
/services/records?Page=0&Count=5&Conditions[UserId]=1
Frage
So erzwingen Sie Swagger, um URL wie PropertyName [Schlüssel] zu rendern. Way, Swagger erstellt eine korrekte URL. < /p>
Code: Select all
{
"Conditions[UserId]": "1",
"Conditions[GroupId]": "2"
}
< /code>
URL ist jetzt korrekt und ordnungsgemäß an das Modell < /p>
gebunden/services/records?Page=0&Count=5&Conditions[UserId]=1&Conditions[GroupId]=2
Gibt es eine Möglichkeit, den Standardwert zu ändern, der in der Prahlerei für Wörterbuch Eingabetyp angezeigt wird?
Swagger generiert eine falsche URL, wenn das aus der Abfragezeichenfolge extrahierte Modell ein Wörterbuch als eine seiner Eigenschaften hat. Wie kann man Swagger sagen, dass sie das Format des Wörterbuchs in der URL [url=viewtopic.php?t=12045]ändern[/url] oder das Schema für Eingabeparameter manuell ohne Auto-Generation definieren soll? Versucht, Swashbuckle und NSWAG zu verwenden. < /P>
Controller: < /p>
[code]public class RecordsController : ControllerBase
{
[HttpGet]
[Route("services/records")]
public async Task Records([FromQuery] QueryModel queryModel)
{
return null;
}
}
< /code>
Eingabemodell - Abfragezeichenfolge: < /p>
public class QueryModel
{
public int Page { get; set; }
public int Count { get; set; }
public Dictionary Conditions { get; set; }
}
< /code>
Swagger UI zeigt dieses Format für die Eigenschaft "Bedingungen" auf Abfragemodell: < /p>
{
"UserId": "string",
"GroupId": "string",
"RecordId": "string"
}
< /code>
Swagger generierte URL - Öffnen Sie API V2 - Es ist nicht an "Bedingungen" gebunden < /p>
/services/records?Page=0&Count=5&Conditions={"UserId":"1"}
< /code>
Swagger generierte URL - Öffnen Sie API v3 - Es ist nicht an "Bedingungen" gebunden < /p>
/services/records?Page=0&Count=5&UserId=1
[/code]
Benutzerdefinierte URL - funktioniert wie erwartet "Bedingungen" mit {"userId", "1"}
[code]/services/records?Page=0&Count=5&Conditions[UserId]=1
[/code]
[b] Frage [/b]
So erzwingen Sie Swagger, um URL wie PropertyName [Schlüssel] zu rendern. Way, Swagger erstellt eine korrekte URL. < /p>
[code]{
"Conditions[UserId]": "1",
"Conditions[GroupId]": "2"
}
< /code>
URL ist jetzt korrekt und ordnungsgemäß an das Modell < /p>
gebunden/services/records?Page=0&Count=5&Conditions[UserId]=1&Conditions[GroupId]=2
[/code]
Gibt es eine Möglichkeit, den Standardwert zu ändern, der in der Prahlerei für Wörterbuch Eingabetyp angezeigt wird?