Я экспериментировал с MVC WebAPI, довольно крутая штука. Но я борюсь с концепцией маршрутов.
в качестве примера у меня есть структура проекта webAPI, примерно следующая:
Проект:
- Controllers
- Customers
- CustomerController.cs
- CustomerAddressController.cs
- Products
- ProductCategoriesController.cs
- ПродуктыКонтроллер
- Customers
В настоящее время у меня есть один маршрут API, определенный в WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "CustomerApi",
routeTemplate: "api/customer/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
Это работало нормально, когда у меня были только контроллеры, связанные с клиентом. поэтому я мог бы позвонить:
- ПОЛУЧИТЬ api/customer/CustomerAddress/?customerID= 1234
но теперь, когда я добавил контроллеры, связанные с продуктом, я нашел конфигурацию как есть (конечно), чтобы получить продукты, которые я должен вызывать Uri:
- ПОЛУЧИТЬ api/customer/products/?prodID= 5678 *НО мне не нужен этот Uri
вместо этого я хочу:
- ПОЛУЧИТЬ API/продукты/?prodID= 5678
и для категорий продуктов я хотел бы что-то вроде:
- ПОЛУЧИТЬ API/продукты/категории/?catID= 1357
Я думал, что мне нужно добавить больше маршрутов, но я не могу найти, как связать различные контроллеры с маршрутом, который я хочу для них?
если я добавлю еще один маршрут, я получу два разных маршрута uri для каждого из созданных мной контроллеров.
Как я могу добиться желаемого логического разделения?