Понятия не имею, с чего начать. Я задал вопрос ранее, и кто-то предложил мне посмотреть на атрибут маршрутизации. Я прочитал об этом, и хотя это помогло мне создать приведенный ниже код, я все еще не уверен, как ограничить его, как я хочу.
public class ReviewController : ApiController
{
private Review db = new Review();
////This GET works. It was auto-generated by Visual Studio.
// GET: api/Review
public IQueryable<Review> GetReview()
{
return db.Review;
}
////This is the GET that I'm trying to write, but don't know what to do
// GET: api
[Route("api/review/site")]
[HttpGet]
public IEnumerable<Review> FindStoreBySite(int SiteID)
{
return db.Review
}
////This GET also works and was generated by VS.
// GET: api/Review/5
[ResponseType(typeof(Review))]
public IHttpActionResult GetReview(int id)
{
Review review = db.Review.Find(id);
if (review == null)
{
return NotFound();
}
return Ok(review);
}
По сути, я стремлюсь ограничить то, что возвращает API, только результатами, где SiteID
равно значению, которое передается в URL. Я даже не уверен, с чего начать, и переполнение стека в поиске и поиске «что добавить в возврат веб-API» было бесплодным.
Как мне сообщить API, что я хочу вернуть, основываясь на параметре помимо ReviewID?
Изменить: я обновил код в соответствии с предложениями в ответе ниже, но теперь я получаю новую ошибку.
Вот текущий код:
private ReviewAPIModel db = new ReviewAPIModel();
// GET: api/Review
[Route("api/Review")]
[HttpGet]
public IQueryable<Review> GetReview()
{
return db.Review;
}
// GET: api
[Route("api/Review/site/{siteid}")]
[HttpGet]
public IEnumerable<Review> FindStoreBySite(int siteid)
{
return db.Review.Where(Review => Review.SiteID == siteid);
}
// GET: api/Review/5
[ResponseType(typeof(Review))]
public IHttpActionResult GetReview(int id)
{
Review review = db.Review.Find(id);
if (review == null)
{
return NotFound();
}
return Ok(review);
}
}
Вот ошибка, которую я получаю:
Multiple actions were found that match the request
Когда я запускаю Google, возникает вопрос: Найдено несколько действий, соответствующих запросу в Web Api
Однако я попробовал ответы там (я подтвердил, что использую Web API V2, и мой файл webapiconfig.cs содержит строку config.MapHttpAttributeRoutes();
.
Кроме того, как вы можете видеть в моем коде выше, я включил соответствующую маршрутизацию. Тем не менее, я все еще получаю сообщение об ошибке, сообщающее, что он возвращает два конфликтующих вызова API.