#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 });
И я использую Почтальона, чтобы проверить звонки с некоторым успехом, но не все:
- https://localhost:44339/api/records/List — ОТЛИЧНО РАБОТАЕТ
- 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){}
Похоже, это решило проблему. Я по-прежнему открыт для мнений и предложений. Написание хорошего кода-это цель, а не просто поиск решений без понимания.