programing

ASP에서 Camel Case를 강제 적용합니다.컨트롤러당 NET WebAPI 수

telebox 2023. 3. 23. 22:36
반응형

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

반응형