1) У меня есть контроллер с префиксным маршрутом, т. Е. Companies.
Когда я вызываю следующее действие:
[HttpGet]
public async Task<IHttpActionResult> GetCompanies(...
{
...
}
, он возвращает мне список компаний, но теперь я быЯ хотел бы объявить о втором действии, в котором я могу вернуть список компаний и его 3 главных контакта, поэтому я решил определить свое новое действие следующим образом:
[HttpGet]
[Route("Contacts")]
public async Task<IHttpActionResult> GetCompaniesAndContacts(...
{
...
}
как RoutePrefix
определяется как
[RoutePrefix("Companies")]
Я думал, что смогу вызвать свой URI, используя следующее:
http://localhost/companies/contacts
, но это всегда похоже на действие GetCompanies.
Я могу только предположить, что мой маршрут не обрабатывается, но я не уверен, как добавить такое специальное действие к
config.Routes.MapHttpRoute(....)
2) Кроме того, есть способ определить этот второйсовместимы с маршрутом или лучше использовать параметр строки запроса, чтобы указать, что я хочу включить пользователей?
.. / companies ../companies/users
Спасибо
ОБНОВЛЕНИЕ-1:
Это то, что моя функция регистрации в моем WebApiConfig.cs попытался добавить определенный маршрут, но безуспешно:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "OrganizationWithUsers",
routeTemplate: "api/Companies/Contacts"
);
UPDATE-2:
Если я удаляю:
[HttpGet]
public async Task<IHttpActionResult> GetCompanies(...
{
...
}
Он вызывает
[HttpGet]
[Route("Contacts")
public async Task<IHttpActionResult> GetCompaniesAndContacts(...
{
...
}
но я получаю ошибку The value 'contacts' is not valid for Guid.
.
Хммм ... Я вижу, что происходит, но я не уверен, как это исправить.У меня также есть GetCompany, которая определяется следующим образом:
[HttpGet]
public async Task<IHttpActionResult> GetCompany(Guid id)
, так что похоже, что этот удар сейчас, что имеет смысл.
Я попытался добавить ограничение на этоти добавьте мой маршрут обратно в GetCompaniesAndContacts и удалите RoutePrefix, но он не сработал.
Я думаю, что есть конфликт, потому что у меня есть 2 идентичных получения, и он не может различить 2.
ОБНОВЛЕНИЕ-3:
Вот полное определение в соответствии с просьбой:
[RoutePrefix("Companies")]
[ValidationModel]
[ApiException]
public class CompaniesController : BaseController
{
...
[HttpGet]
public async Task<IHttpActionResult> GetCompanies(
int pageIndex,
int pageSize,
string orderBy,
OrderByDirection orderByDirection,
string filters)
{
...
}
[HttpGet]
[Route("Contacts")]
public async Task<IHttpActionResult> GetCompaniesAndContacts(
int pageIndex,
int pageSize,
string orderBy,
OrderByDirection orderByDirection,
string filters)
{
...
}
}