繁体   English   中英

Web API [FromUri]获取方法映射

[英]Web API [FromUri] Get Method Mapping

我很可能会设置错误。 但是我的Web api控制器中的get方法。

    [HttpGet]
    [Route("{productId:guid}", Name = nameof(GetProduct))]
    [ResponseType(typeof(Product))]
    public async Task<IHttpActionResult> GetProduct([FromUri]GetProductRequest request)

在请求中,我有Guid ProductId

public class GetProductRequest 
{
    public const string ProductIdRequired = nameof(ProductId) + " cannot be empty";

    [Required(ErrorMessage = ProductIdRequired)]
    public Guid ProductId { get; set; }
}

我希望请求网址看起来像localhost / v1 / product / 123

但它是localhost / v1 / product / {ProductId}?productId = 123&request.productId = 123'

如果我放弃路线{productId:guid},我会得到localhos / v1 / product?request.productId = 123',这也很奇怪。 不确定为什么要在URL中使用request.productId。

您在两个地方指示MVC解析输入值: [Route]属性,以及控制器方法参数上的[FromUri]属性。

尝试这个:

  1. 从控制器方法中删除[FromUri]
  2. 将控制器参数更改为Guid productId ,它与属性路由配置[Route({productId:guid})]的值匹配。

然后,您应该看到它响应以下请求: localhost/v1/product/{productId}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM