ASP에서 Camel Case를 강제 적용합니다.컨트롤러당 NET WebAPI 수
ASP.NET WebAPI에서는 global.aspx의 CamelCasePropertyNamesContractResolver()를 사용하여 기본 json 포메터를 설정하여 모든 json 시리얼화를 강제로 camel case로 만들 수 있습니다.
단, 글로벌 솔루션이 아닌 '컨트롤러별' 인스턴스로 설정할 수 있어야 합니다.
이게 가능합니까?
@KiranChalla 덕분에 생각보다 쉽게 할 수 있었습니다.
다음은 제가 만든 꽤 간단한 클래스입니다.
using System;
using System.Linq;
using System.Web.Http.Controllers;
using System.Net.Http.Formatting;
using Newtonsoft.Json.Serialization;
public class CamelCaseControllerConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
var formatter = controllerSettings.Formatters.OfType<JsonMediaTypeFormatter>().Single();
controllerSettings.Formatters.Remove(formatter);
formatter = new JsonMediaTypeFormatter
{
SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
};
controllerSettings.Formatters.Add(formatter);
}
}
그런 다음 CamelCase를 원하는 컨트롤러 클래스에 속성을 추가합니다.
[CamelCaseControllerConfig]
네, 그럴 수도 있어요.사용할 수 있습니다.IControllerConfiguration
컨트롤러별 설정을 정의합니다.
이 시나리오를 설명하는 샘플입니다.이 인터페이스의 사용 방법에 대해서는, 이쪽(샘플 참조)에서 간단하게 확인할 수 있습니다.
이 스택 오버플로우 답변은 도움이 될 것입니다.CamelCasing을 사용하는 모든 액션에 적용할 수 있는 액션필터를 작성하는 방법에 대해 설명합니다.
꽤 오래된 내용인 것은 알지만, 포메터를 삭제했다가 다시 추가하자 포메터에 다른 필요한 변경이 있었기 때문에 답변에 문제가 있었습니다.저는 이 Gist: https://gist.github.com/mauricedb/5356933에 표시된 것처럼 기존 포맷터를 수정하기만 하면 됩니다.
언급URL : https://stackoverflow.com/questions/19956838/force-camelcase-on-asp-net-webapi-per-controller
'programing' 카테고리의 다른 글
오류: 이 메서드는 단일 노드에서만 실행됩니다.대신 0이 발견됨 (0) | 2023.03.23 |
---|---|
Spring Security, Method Security 주석(@Secured )이 작동하지 않습니다(java config). (0) | 2023.03.23 |
Wordpress 외부 구텐베르크 에디터 (0) | 2023.03.23 |
jQuery UI 자동 완성:제안된 리스트에서 선택한 값만 허용 (0) | 2023.03.18 |
UI-Router를 사용하여 페이지 제목 설정 (0) | 2023.03.18 |