【问题标题】:Web api with multiple routes controller/{path}&{path}具有多个路由控制器/{path}&{path} 的 Web api
【发布时间】:2021-07-18 02:07:36
【问题描述】:

我正在尝试创建一个 Web api,它允许我获取价格介于两个不同值之间的所有书籍。

所以通过输入api/books/price/30.0&35.0,我将归还所有书籍with price between '30.0' och '35.0' sorted by price。我的代码如下所示。

[HttpGet("price")]
    public ActionResult GetBooksSortedByPrice()
    {
        var book = FindBooksSortedByPrice();
        if (book is null) return NotFound();
        return Ok(book);
    }
    [HttpGet("price/{price}")]
    public IActionResult GetBookByPrice(double price)
    {
        var book = FindBookByPrice(price);
        if (book is null) return NotFound();
        return Ok(book);
    }
    //returns books from requested price
    private IEnumerable<Book> FindBookByPrice(double price)
    {
        //var allBooksBetweenPrices = _bookList.Where(_bookList => (_bookList.Price >= firstPrice) && (_bookList.Price <= secondPrice));
        //return allBooksBetweenPrices;
        return _bookList.Where(_bookList => _bookList.Price.Equals(price));
    }
    private IEnumerable<Book> FindBooksSortedByPrice()
    {
        return _bookList.OrderBy(b => b.Price).Where(_bookList => _bookList.Price.Equals(_bookList.Price));

    }

我知道我可能会被告知我的路由可能会更好,但由于我不理解该指南的内容,我已经完全阅读了我很高兴收到一个较小的解释(带有代码示例)。

【问题讨论】:

    标签: c# asp.net json routes


    【解决方案1】:

    我建议您对价格使用 2 个输入参数而不是一个

    
    [Route("price/{minprice}/{maxprice}")]
    public ActionResult<IEnumerable<Book>> GetBooksSortedByPrice(double minPrice, double maxPrice)
        {
            var books = FindBooksSortedByPrice(minPrice, double maxPrice);
            if (books== null) return NotFound();
            return Ok(books);
        }
    
    [NonAction]
     private IEnumerable<Book> FindBookByPrice(ddouble minPrice, double maxPrice)
        {
      return _bookList
    .Where(b => (b.Price >= minPrice) && (b.Price <= maxPrice))
    .OrderBy(o=>o.Price)
    .ToArray();
            
        }
    

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 2015-05-04
      • 2018-08-21
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2020-04-08
      相关资源
      最近更新 更多