사이트에 웹 API가 있습니다. api 호출에 매개 변수가 없으면 매개 변수가 있으면 해당 매개 변수를 사용할 수 없습니다. 아래는 내가 말하는 것에 대한 예입니다.MVC API의 게시 매개 변수 문제
[HttpGet]
public string GetFacilityName2()
{
return "Good";
}
[HttpGet]
public string GetFacilityName(string projectNumber)
{
return "Never Get Here";
}
현재로서는 내 구성 경로가 기본값입니다.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
다음 두 개의 URL을 사용하고 있습니다. 작동하는 하나의 URL은 내가 이것을했다 API에 세 번째 방법을했다 http://localhost/api/Controller/GetFacilityName?projectNumber=44
UPDATE 입니다 작동하지 않습니다 하나 http://localhost/api/Controller/GetFacilityName2
URL입니다.
[HttpGet]
public Address GetWorkplaceAddress(string projectNumber)
{
return new Address();
}
API에서 이것을 제거하면 다른 방법이 작동하기 시작했습니다. 주소는 이와 같이 정의됩니다.
public class Address
{
public int Id { get; set; }
public string AddressValue { get; set; }
public string City { get; set; }
public int? State { get; set; }
public string Zip { get; set; }
public int? Country { get; set; }
}
매개 변수를 기준으로 컨트롤러에서 작업을 오버로드 할 수 없습니다. RouteAttribute를 사용하여 이름으로 실행하려는 동작을 지정하거나 HTTP 동사 (Get, Post, Put 등)로 지정할 수 있습니다. – Igor
컨트롤러의 각 동작에는 고유 한 이름이 있습니다. 위의 차이점은 끝에 '2'문자가됩니다. – Nate
라우트 템플리트가 이름을 완전히 무시하기 때문에 (즉, {action}이없고) RouteAttributes가없고 사용 된 http 동사의 키 오프를 제외하기 때문에 중요하지 않습니다. – Igor