Проблемы с маршрутизацией WebAPI

#routes #webapi

Вопрос:

У меня есть несколько маршрутов, определенных в WebApiConfig

             config.Routes.MapHttpRoute(
            name: "RecordObject",
            routeTemplate: "api/{controller}/{action}/{objectId}",
            defaults: new { action = "List", objectId = RouteParameter.Optional });

        config.Routes.MapHttpRoute(
            name: "RecordString",
            routeTemplate: "api/{controller}/{action}/{ids}",
            defaults: new { action = "GetRecordsByIds", ids = RouteParameter.Optional });

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{id}/{controller}/{action}",
            defaults: new { id = RouteParameter.Optional });
 

И я использую Почтальона, чтобы проверить звонки с некоторым успехом, но не все:

  1. https://localhost:44339/api/records/List — ОТЛИЧНО РАБОТАЕТ
  2. https://localhost:44339/api/Records/GetRecordsByIds/LEECO-99HIS-00000-0MSFN — НЕХОРОШО

Ниже приведены методы:

     [HttpGet]
    //[Route("~/api/Records/list/{objectId}")]
    public async Task<List<Records>> List(ObjectId objectId)
    {}
    [HttpGet]
    [ActionName("GetRecordsById")]
    //[Route("~/api/Records/GetRecordsById/{Ids}")]        
    public async Task<JObject> GetRecordsByIds(string Ids)
    {}
 

Как вы можете видеть, я пытаюсь использовать несколько подходов и не добиваюсь успеха. Я мог бы воспользоваться некоторыми указателями и советами, если таковые имеются.

Ответ №1:

Обновление: поэтому я все еще не уверен, что это лучший подход, и я открыт для любых предложений. Но я внес некоторые изменения, которые были вдохновлены некоторыми поисками в StackOverflow. Я хотел поделиться ими и, возможно, помочь кому-то еще.

Я сделал следующие дополнения:

     [ActionName("GetRecordsByIds")]
    [Route("~/api/Records/GetRecordsByIds/{ids}")]
    [HttpGet]
    public async Task<JObject> GetRecordsByIds(string Ids){}
 

Похоже, это решило проблему. Я по-прежнему открыт для мнений и предложений. Написание хорошего кода-это цель, а не просто поиск решений без понимания.