Создано с помощью версий APIC#

Место общения программистов C#
Ответить
Anonymous
 Создано с помощью версий API

Сообщение Anonymous »

Я искал все сообщения по рассматриваемой проблеме, но я не нашел никакого приемлемого ответа на эту проблему.

Код: Выделить всё

[ApiController]
[ApiVersion(StringResources.ApiV10)] //"1.0"
[Route(StringResources.RouteWithVersioning)] //"api/v{version:apiVersion}/[controller]"
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public class ProductsController : ControllerBase
{
private readonly IMediator _mediator;

public ProductsController(IMediator mediator)
{
_mediator = mediator;
}

[HttpPost]
[ProducesResponseType(typeof(CreateProductResponse), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status409Conflict)]
public ActionResult Create([FromBody]CreateProductRequest request)
{
try
{
var oid = _mediator.Send(new CreateProdRequest
{
Name = request.Name
});

return CreatedAtRoute(StringResources.GetProduct,
new
{
Oid = oid
},
new CreateProductResponse {Oid= oid});
}
catch (ProductException e) when(e.Errors.Select(err => err.Code).ToList().Contains("DuplicateProductName"))
{
return Conflict(ApiErrors.ProductAlreadyExist4091);
}
}

[HttpGet(Name = StringResources.GetProduct)]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult Get([FromQuery]GetProductRequest request)
{
var result = _mediator.Send(new GetRequest
{
Oid = request.Oid
});

if (result == null)
return NotFound();

return Ok(result);
}
}
< /code>
Но когда я создаю продукт и возвращаю CreateAroute < /code> Я всегда получаю исключение: < /p>

exception.system.invalidoperationExexcept Содержит только OID 
свойства.
Я попытался использовать CreateAtaction , но URI, возвращаемый в заголовке, неверен (он не содержит PATH/API/V1/Products).
Конфигурация стартапа для промежуточного программного обеспечения это:

Код: Выделить всё

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
< /code>
и для служб: < /p>
services.AddApiVersioning(options =>
{
options.ReportApiVersions = true;
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
});

services.AddVersionedApiExplorer(options =>
{
options.GroupNameFormat = "'v'VVV";
options.SubstituteApiVersionInUrl = true;
});
Я считаю, что проблема связана с тем, что в пути присутствует версия API, но я не знаю, как это исправить.

Подробнее здесь: https://stackoverflow.com/questions/616 ... versioning
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»