webapi中的其他Get方法

时间:2018-01-11 01:45:46

标签: asp.net-web-api

考虑我需要三个Get方法ProductController。

1)的GetProducts()

2)GetProducts(int id)

3)GetProductsForDiscount()

第三种方法我无法访问它。它根本没有显示出来。

https://ibb.co/jDnSRm

1 个答案:

答案 0 :(得分:0)

RESTful API的最佳实践是使基于名词的URL具有由标准HTTP谓词(GET,POST等)定义的操作.URL定义资源(在本例中为Products),动词定义操作(GET) =读)。参数允许您控制返回给调用者的内容。

在ASP.NET WebApi中实现此目的的常用方法是通过属性路由。您可以定义ASP运行时应如何根据查询字符串参数选择控制器操作。

例如:

public class ProductController : ApiController
{
    public IHttpActionResult Get()
    {
        /*
         * Code to get products here.
         */
        return Ok<IEnumerable<Product>>(products);
    }

    [Route("api/product/{id:int}")]
    public IHttpActionResult Get(int id)
    {
        /*
         * Code to get product here.
         */
        return Ok<Product>(product);
    }

    [Route("api/product/{forDiscount:bool}")]
    public IHttpActionResult Get(bool forDiscount)
    {
        /*
         * Code to get discounted products here.
         */
        return Ok<IEnumerable<Product>>(products);
    }

}

调用此控制器时,将按如下方式选择操作:

  • / product - 返回产品列表的第一个操作。
  • / product / 123 - 返回ID = 123的产品的第二个操作。
  • / product / true - 返回折扣产品列表的第三个操作。