이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3324|회답: 0

[출처] ASP.NET Core(23) API 인터페이스 NULL은 HTTP 204 상태 코드를 반환합니다

[링크 복사]
게시됨 2023. 8. 20. 오후 3:27:55 | | | |
요구사항: ASP.NET Core 6을 사용하여 외부 서비스를 제공하는 새로운 웹 API 프로젝트를 생성할 것. 인터페이스는 빈 객체나 빈 문자열을 반환할 수 있습니다. NULL을 반환할 경우 인터페이스 응답은 다음과 같습니다: 204 내용 없음, 204는 일반적인 응답 코드를 나타내며(문제없음), 하지만,일부 캡슐화된 HTTP 프레임워크는 200 상태 코드만 정상으로 간주합니다。 그래서 204 상태 코드를 200 상태 코드로 변경하세요.

인터페이스 코드:

검사 결과는 다음과 같습니다:



인터페이스는 ASP.NET Core에 기본적으로 추가된 4가지 출력 포맷 구현 때문에 HTTP 204 No Content 상태 코드를 반환합니다:

  • Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter


HttpNoContentOutputFormatter의 소스 코드는 다음과 같습니다:



메모:인터페이스가 void 타입을 반환하면 Task는 HTTP 200 상태 코드를 반환합니다왜냐하면 HttpNoContentOutputFormatter의 CanWriteResult 메서드에 들어가지 않기 때문입니다!! 그곳으로CanWriteResult 메서드가 true를 반환하면 WriteAsync를 거칩니다메서드.





용액

다음 코드를 사용하여 OutputFormatters 컬렉션에서 HttpNoContentOutputFormatter 구현 클래스를 제거합니다:

다시 인터페이스에 접속하여 다음과 같이 테스트합니다:

반환 타입은 string?이며, 200 상태 코드를 반환하고 출력이 없습니다
반환 타입은 object?이며, 200 상태 코드를 반환하고 null을 출력합니다

(끝)




이전의:Docker 컨테이너는 ping 도구를 설치하기 위해 aspnet:6.0을 기반으로 합니다
다음:Windows Edge 브라우저가 IE와 함께 크래시 솔루션을 엽니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com