我很可能会将此设置错误。但是我的Web api控制器中的get方法。
SELECT junc.id,
typ.word_type,
mean.meaning
FROM junc_meaning_word_type AS junc
JOIN hgs_word_types AS typ
ON junc.word_type_id = typ.id
JOIN hgs_meanings AS mean
ON junc.meaning_id = mean.id
在请求中,我具有Guid ProductId
[HttpGet]
[Route("{productId:guid}", Name = nameof(GetProduct))]
[ResponseType(typeof(Product))]
public async Task<IHttpActionResult> GetProduct([FromUri]GetProductRequest request)
我希望请求网址看起来像localhost / v1 / product / 123
但它是localhost / v1 / product / {ProductId}?productId = 123&request.productId = 123'
如果我放弃路线{productId:guid} 我得到localhos / v1 / product?request.productId = 123',这也很奇怪。不确定为什么要在URL中使用request.productId。
答案 0 :(得分:1)
您有两个指示MVC解析输入值的地方:[Route]
属性,以及控制器方法参数上的[FromUri]
属性。
尝试一下:
[FromUri]
。Guid productId
,与您的属性路由配置[Route({productId:guid})]
的值匹配。然后您应该看到它对以下位置的请求做出了响应:localhost/v1/product/{productId}