var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
In der StandardwetterforeCastController habe ich diese Methode hinzugefügt:
[HttpGet("vehicle", Name = "GetVehicle")]
public RequestVehicle Vehicle([FromBody] RequestVehicle requestVehicle)
{
requestVehicle.Vehicle.Start();
return requestVehicle;
}
< /code>
, der diese Klassen verwendet: < /p>
public class RequestVehicle
{
public Vehicle Vehicle { get; set; }
}
public abstract class Vehicle
{
public string Status { get; set; }
public string Name { get; set; }
public abstract void Start();
protected Vehicle()
{
Status = "Not running";
}
}
public class Car : Vehicle
{
public Car()
{
Name = "Car";
}
public override void Start()
{
Console.WriteLine("Broemmm pruttle put");
Status = "Running";
}
}
< /code>
Wenn ich die Anwendung ausführe und zu: < /p>
gehehttps://localhost:7262/openapi/v1.json
< /code>
Ich erhalte diesen JSON: < /p>
{
"openapi": "3.0.1",
"info": {
"title": "WebApplication3 | v1",
"version": "1.0.0"
},
"servers": [
{
"url": "https://localhost:7262"
},
{
"url": "http://localhost:5136"
}
],
"paths": {
"/WeatherForecast": {
"get": {
"tags": [
"WeatherForecast"
],
"operationId": "GetWeatherForecast",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WeatherForecast"
}
}
},
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WeatherForecast"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WeatherForecast"
}
}
}
}
}
}
}
},
"/WeatherForecast/vehicle": {
"get": {
"tags": [
"WeatherForecast"
],
"operationId": "GetVehicle",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequestVehicle"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RequestVehicle"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/RequestVehicle"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/RequestVehicle"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequestVehicle"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RequestVehicle"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"RequestVehicle": {
"type": "object",
"properties": {
"vehicle": {
"$ref": "#/components/schemas/Vehicle"
}
}
},
"Vehicle": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"WeatherForecast": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date"
},
"temperatureC": {
"type": "integer",
"format": "int32"
},
"temperatureF": {
"type": "integer",
"format": "int32"
},
"summary": {
"type": "string",
"nullable": true
}
}
}
}
},
"tags": [
{
"name": "WeatherForecast"
}
]
}
< /code>
Verwenden dieses JSON, erstelle ich den Client mit NSWAGStudio. < /p>
Hier ist ein Teil des generierten Code:[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class RequestVehicle
{
[Newtonsoft.Json.JsonProperty("vehicle", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public Vehicle Vehicle { get; set; }
private System.Collections.Generic.IDictionary _additionalProperties;
[Newtonsoft.Json.JsonExtensionData]
public System.Collections.Generic.IDictionary AdditionalProperties
{
get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary()); }
set { _additionalProperties = value; }
}
}
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))")]
public partial class Vehicle
{
[Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Status { get; set; }
[Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Name { get; set; }
private System.Collections.Generic.IDictionary _additionalProperties;
[Newtonsoft.Json.JsonExtensionData]
public System.Collections.Generic.IDictionary AdditionalProperties
{
get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary()); }
set { _additionalProperties = value; }
}
}
Das Problem ist, dass das Auto Objekt im generierten Code in NSWAGSTUDIO fehlt. Ich habe mehrere Ansätze mit ChatGPT ausprobiert, aber es scheint, dass ich dem Fahrzeugobjekt explizit sagen muss, dass es sich auch um ein Auto .
Ich habe mehrere Vorschläge ausprobiert, aber ich kann es nicht zum Laufen bringen.
Ich versuche, eine .NET -Framework -WCF -Anwendung in eine .NET 9 OpenAPI -Anwendung zu modernisieren.[code]var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.MapOpenApi(); }
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run(); [/code] In der StandardwetterforeCastController habe ich diese Methode hinzugefügt: [code][HttpGet("vehicle", Name = "GetVehicle")] public RequestVehicle Vehicle([FromBody] RequestVehicle requestVehicle) { requestVehicle.Vehicle.Start(); return requestVehicle; } < /code> , der diese Klassen verwendet: < /p> public class RequestVehicle { public Vehicle Vehicle { get; set; } }
public abstract class Vehicle { public string Status { get; set; } public string Name { get; set; } public abstract void Start();
protected Vehicle() { Status = "Not running"; } }
public class Car : Vehicle { public Car() { Name = "Car"; }
[Newtonsoft.Json.JsonExtensionData] public System.Collections.Generic.IDictionary AdditionalProperties { get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary()); } set { _additionalProperties = value; } } } [/code] Das [url=viewtopic.php?t=18916]Problem[/url] ist, dass das Auto Objekt im generierten Code in NSWAGSTUDIO fehlt. Ich habe mehrere Ansätze mit ChatGPT ausprobiert, aber es scheint, dass ich dem Fahrzeugobjekt explizit sagen muss, dass es sich auch um ein Auto . Ich habe mehrere Vorschläge ausprobiert, aber ich kann es nicht zum Laufen bringen.
Swagger OpenAPI 3.0 arbeitet mit Springdoc-OpenAPI-UI und einer benutzerdefinierten OpenAPI-Bean.
org.springframework.cloud
spring-cloud-starter-parent
Hoxton.SR10
Ich habe eine Reihe von @Data-Klassen, die Lombok verwenden, und ich möchte sie alle migrieren, um die neue Record-Funktionalität zu verwenden, die in Java 14 verfügbar ist.
Ich weiß, dass es so ist...
Ich versuche, eine Vererbungsstruktur in meinem Projekt zu implementieren, in der ich eine abstrakte Item-Klasse mit mehreren konkreten Unterklassen wie ColletItem, DeviceItem und HolderItem habe....
Ich habe eine Reihe von @data -Klasses mit Lombok und möchte alle migrieren, um die in Java 14 verfügbare neue Datensatzfunktion zu verwenden. Ein bisschen früher, aber dies ist ein experimenteller...