벤더 애플리케이션에 의해 미리 정의 된 REST API를 구현하는 프로젝트를 빌드해야합니다. (이는 소비 할 것입니다.) - 다른 HTTP- 동사 (POST, GET, PUT, DELETE 등). ASP.Net Core WebApi의 비 속성 라우트
그래서, 이상적으로, 각 자원에 대해이 같은 하나의 클래스가 있어야합니다 이전 버전의public class SomethingController
{
public Something Post(string name, DateTime time)
{
// ...
}
public int PostStrange(string text)
{
// ...
}
public Something Put([FromBody]Something item)
{
// ...
}
public void Delete(int id)
{
// ...
}
}
난 그냥 경로를 등록하는 동안, MapHttpRoute 전화 ApiController
에서이 같은 클래스를 상속 할 수 있습니다 - 그리고 ASP.NET 웹 API가 내가 필요로 할 것입니다 ...하지만 .NET 코어에서 MapHttpRoute/ApiController 같은 것을 찾을 수 없습니다 .. 이제 거기에 라우팅 및 HTTP 동사 특성 및 모든 클래스/메서드에 대해 명시 적으로 모든 정의해야합니다 :
[Route("api/[controller]")]
public class SomethingController : Controller
{
[HttpPost]
public Something Post(string name, DateTime time)
{
// ...
}
[HttpPost("api/[controller]/strange")]
public int PostStrange(string text)
{
// ...
}
[HttpPut]
public Something Put([FromBody]Something item)
{
// ...
}
[HttpDelete]
public void Delete(int id)
{
// ...
}
}
글쓰기 thi 수천 개의 REST- 리소스 각각에 대한 속성은 매우 지루하고 오류가 발생하기 쉽습니다 ...
여기에 뭔가가 있습니까? 왜 꽤 새롭고 현대적인 ASP.NET 코어에서 REST-Api를 구축 할 때 매우 일반적이며 중요한 것은 이전 ASP.NET과 비교하여 너무 복잡해 졌습니까?
예'MapRoute'은 여전히 존재하지만'MapHttpRoute'는 언급되지 않았습니다 - 그들은 완전히 다른 경로 매핑을 제공합니다. 'MapRoute'은 url 질의 문자열에서 컨트롤러의 액션 메소드까지의 매핑을 제공하며, MapHttpRoute은 HTTP-verb와 질의 문자열을 API 컨트롤러의 verb-methods에 맵핑하여 제공됩니다. – rufanov
'MapRoute'을 사용하면 리소스 (REST-api의 본질)와는 다른 일을하기 위해 다른 http 동사와 함께 호출 할 수있는'api/something'와 같은 단일 명명 된 REST 리소스를 아카이브 할 수 없습니다 - MapRoute은'api/something/post','api/something/delete','api/something/put','api/something/putstrange'의 네 가지 URL을 매핑 할 것입니다. – rufanov