닷넷 코어를 쓰고 나서부터........API결과는 'camelCase'로 온다고 느끼고 있었습니다.
이걸 'PascalCase'로 바꿔 봅시다.
코드 표기법에는 여러 가지가 있는데 그중 많이 쓰는 것이 카멜케이스(카멜표기법)와 파스칼케이스(파스칼표기법)입니다.
파스칼케이스는 단어를 대문자로 시작하고 붙여 씁니다.
예> PascalCase
카멜케이스는 파스칼케이스에 첫 대문자만 소문자로 표시합니다.
예> camelCase
그런데 C#의 네이밍 규칙의 기본은 파스칼케이스입니다.
그런데 API에서 모델을 결과로 전달하면 카멜케이스로 넘어옵니다.
필요한 부분만 바꾸는 방법과 전체를 기본 정책을 바꾸는 방법이 있습니다.
필요한 부분에 'JsonProperty'속성을 추가해줍니다.
( 참고 : stackoverflow Janus Pienaar님 답변 - How to keep casing of properties in json returned by Asp.Net Core controller? )
예>
[JsonProperty("TestInt03")]
public int IntTest03 { get; set; }
[JsonProperty("TestString03")]
public string StringTest03 { get; set; }
속성이 우선적용됩니다.
'Startup.cs'의 'ConfigureServices'를 다음과 같이 작성합니다.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
}
'AddJsonOptions'를 이용하여 'DefaultContractResolver'옵션을 추가해주면 됩니다.
( 참고 : .Net Core Tutorials - Pascalcase vs Camelcase in ASP.net Core )
기존 모델도 파스칼케이스로 바뀐것을 알 수 있습니다.
3.0 부터는 코드가 다릅니다.
먼저 누겟(NuGet)에서 'Microsoft.AspNetCore.Mvc.NewtonsoftJson'를 찾아 설치해줍니다.
참조 추가를 해줍니다.
using Newtonsoft.Json.Serialization;
코드를 바꿉니다.
//API모델을 파스칼 케이스 유지하기
services.AddControllers().AddNewtonsoftJson(options =>{ options.SerializerSettings.ContractResolver = new DefaultContractResolver();});
완성된 샘플 : Github dang-gun - AspDotNetSamples/WebApiPascalCase/
이게 닷넷코어전에는 파스칼케이스가 기본이였던거 같은데.....
기억이 안나네요 ㅎㅎㅎㅎ