Processing math: 100%

Wednesday, August 21, 2019

Web Api Config | Json Pascel Case 與 Camel Case 的轉換

如果新建一個 api project,所有設定檔都會自動妥當地設定好,但想在現有 mvc project 加上一個 api controller 則有可能像我那様,奇怪地少了很多必要的 config。在這裏紀錄一下缺少檔案時必須要加回來的設定檔:

在 App_Start 必須要有 WebApiConfig.cs:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System.Web.Http;
 
namespace ProjectName
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            var settings = config.Formatters.JsonFormatter.SerializerSettings;
            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            settings.Formatting = Formatting.Indented;
 
            config.MapHttpAttributeRoutes();
 
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}
以上 highlight 的地方把 .net 輸出的所有 json 檔案的 property 全部變成 Camel case,反過來收到的 json 也會從 Camel case 變成 Pscal case。另外,在 Global.asax 必須要有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace ProjectName
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

No comments:

Post a Comment