首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.net核心WebAPI路由顺序参数条件

ASP.net核心WebAPI路由顺序参数条件
EN

Stack Overflow用户
提问于 2019-05-27 04:47:22
回答 1查看 55关注 0票数 0

我有下面的控制器:

代码语言:javascript
运行
复制
[Route("xapi/statements")] << -- NOTICE THE ROUTE
[Produces("application/json")]
public class StatementsController : ApiControllerBase

他采取了以下行动

代码语言:javascript
运行
复制
/// <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

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 02:28:39

我没有找到我自己的问题的答案,但是我犯了一个错误,我的印象是xAPI语句资源应该允许statementId作为POST请求的参数。因此,我不再有这个问题,这就开始了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56317237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档