asp.net 핵심 웹 API로 실험하려고하므로 다음과 같은 컨트롤러로 간단한 API를 만들었습니다.
[ApiController]
[Route("MyController")]
public class MyController : ControllerBase
{
[HttpGet]
[Route("GetResult")]
public IActionResult GetResult(string param1, string param2= null, SomeClassObj obj = null)
{ .... }
}
로컬에서 API를 실행하고이 우편 배달부 GET 요청을 보냈습니다.
https://localhost:5001/MyController/GetResult?param1=someString
오류가 발생했습니다 : 415 Unsupported Media Type
작동 할 수 있도록 여기에서 무엇을 놓치고 있습니까?
어떤 버전의 .NET Core를 사용하고 있습니까?
브라우저에서 요청을 시도하고 동일한 결과가 있는지 확인하십시오.
또한 Postman에서 POST 요청이 아닌 GET을 수행하고 있습니까? 특히 본문을 보내지 않을 때 GET 요청에 대해 415 오류가 발생하지 않아야합니다. 이 오류는 주로 본문을 보내려고 할 때 Content-Type
헤더를 통해 미디어 유형을 지정하지 않은 경우에 발생합니다 .
요청이 GET이고 본문이 비어 있는지 확인하십시오.
사후 편집 후 해결 방법 :
DTO 객체 ( SomeClassObj
) 를 구문 분석 할 때 값의 출처를 지정해야합니다. 특정 사례를 수정하려면 [FromQuery]
앞에 속성을 추가하세요 SomeClassObj
.
코드는 다음과 같아야합니다.
[ApiController]
[Route("MyController")]
public class MyController : ControllerBase
{
[HttpGet]
[Route("GetResult")]
public IActionResult GetResult(string param1, string param2= null, [FromQuery]SomeClassObj obj = null)
{ .... }
}
이것은 구문 분석기가 쿼리 문자열에서 데이터를 가져 오도록 지시합니다. 이렇게하면 문제가 415
해결됩니다. 그러나 특히 get에서 복잡한 형식에 바인딩하려면 ASP.NET CORE 3.1 모델 바인딩 및 DTO 개체 구문 분석 문제가 발생할 가능성이 가장 높은 이 문제 를 확인하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다