我有下面的控制器:
[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
但是,只有在提供了statementId参数的情况下,才应该触发PutStatement。事实并非如此。
我使用2个模型绑定器将流的内容解析为application/json或multipart/form-data (如果语句有任何附件)。1. StatementPutModelBinder 2. StatementsPostModelBinder
如果未提供statementId参数,如何防止该操作被执行?例如:/xapi/statements/ =>命中PutStatement
发布于 2019-05-28 02:28:39
我没有找到我自己的问题的答案,但是我犯了一个错误,我的印象是xAPI语句资源应该允许statementId作为POST请求的参数。因此,我不再有这个问题,这就开始了我的问题。
https://stackoverflow.com/questions/56317237
复制相似问题