以前在寫API時,都寫在Controller,而不是ApiController
這次的專案,總覺得應該要標準化改走ApiController
沒想到遇到了不少問題
1.預設的Route下,每個ApiController只允許一個Get/Delete/Post
若要同一個ApiController底下支援多個,可以修改WebApiConfig
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.EnableCors(); config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}" ); } }
|
2.ApiController的Route會認前面的字樣,呼叫的方法有限制
例如,開頭為Get就不支援Get以外的呼叫
若開頭都不在標準方法內,則需使用Post
1 2 3 4 5 6 7 8 9
| public ReturnDataModel GetUserData() { }
public ReturnDataModel SignIn() { }
|
3.Post的傳遞參數,若為物件,則只能接受一個物件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public ReturnDataModel SignIn(string user, string password) { }
public class UserData { public string UserName{get;set;} public string Password{get;set;} }
public ReturnDataModel SignIn(UserData data) { }
public ReturnDataModel SignIn(UserData data, string device) { }
|