Состояние параметра порядка маршрутизации ASP.net Core WebAPI - PullRequest
0 голосов
/ 26 мая 2019

У меня есть следующий контроллер:

[Route("xapi/statements")] << -- NOTICE THE ROUTE
[Produces("application/json")]
public class StatementsController : ApiControllerBase

С помощью следующих действий

/// <summary>
/// Stores a single Statement with the given id.
/// </summary>
/// <param name="statementId"></param>
/// <param name="statement"></param>
/// <returns></returns>
[AcceptVerbs("PUT", "POST", Order = 1)]
public async Task<IActionResult> PutStatement([FromQuery]Guid statementId, [ModelBinder(typeof(StatementPutModelBinder))]Statement statement)
{

    await _mediator.Send(PutStatementCommand.Create(statementId, statement));

    return NoContent();
}

/// <summary>
/// Create statement(s) with attachment(s)
/// </summary>
/// <param name="model"></param>
/// <returns>Array of Statement id(s) (UUID) in the same order as the corresponding stored Statements.</returns>
[HttpPost(Order = 2)]
[Produces("application/json")]
public async Task<ActionResult<ICollection<Guid>>> PostStatements(StatementsPostModelBinder model)
{
    ICollection<Guid> guids = await _mediator.Send(CreateStatementsCommand.Create(model.Statements));

    return Ok(guids);
}

Действия выполняются в следующем порядке: 1. PutStatement 2. PostStatements

Но PutStatement должен запускаться только в том случае, если указан параметр StatementId. Это не тот случай.

Я использую 2 связывателя модели для анализа содержимого потоков как application / json или multipart / form-data, если у операторов есть какие-либо вложения. 1. StatementPutModelBinder 2. StatementsPostModelBinder

Как предотвратить выполнение действия, если не указан параметр StatementId? Например. / xapi / reports / => Хиты PutStatement

1 Ответ

0 голосов
/ 27 мая 2019

Я не нашел ответа на свой вопрос, но допустил ошибку, и у меня сложилось впечатление, что ресурс операторов xAPI должен разрешать StatementId в качестве параметра для запросов POST.Поэтому у меня больше нет проблемы, с которой начался мой вопрос.

...