Предположим, у меня есть такой ресурс в ASP.NET:
/api/cars
И хочу выставить информацию об авто на продажу. Я хочу разоблачить его двумя способами:
/api/cars?model=camry
/api/cars?make=toyota
Я могу реализовать поиск по одному из них, но не по обоим одновременно, поскольку их подписи идентичны. Я использую ApiController в .NET 4.5: как реализовать оба поиска на одном ресурсе?
2 ответа
Вы можете использовать входные параметры, допускающие значение NULL. Поскольку вы используете строки, вам даже не нужно объявлять их как допускающие значение NULL. См. эту статью SO. Суть в том
public ActionResult Action(string model, string make)
{
if(!string.IsNullOrEmpty(model))
{
// do something with model
}
if(!string.IsNullOrEmpty(make))
{
// do something with make
}
}
Как описано в связанной статье SO, любой из следующих маршрутов направит вас к нужному действию:
- ПОЛУЧИТЬ / api / cars
- ПОЛУЧИТЬ / api / cars? Make = toyota
- ПОЛУЧИТЬ / api / cars? Model = camry
- ПОЛУЧИТЬ / api / cars? Make = toyota model = camry
Вот еще одна хорошая статья SO на эту тему.
Я предполагаю, что вы используете WebApi (например, ваш ApiController
равен System.Web.Http.ApiController
)
Тогда ваш метод контроллера будет просто
public HttpResponseMessage GetCars([FromUri] string make, [FromUri] string model) {
... code ...
}
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.