3.C#WebAPI設置路由和參數2


1.上面已經教大家如何修改全局路由了,那么修改完后我們在post請求的要這樣使用,其中model模型我就默認你應該已經建好了,沒有創建的話請看上一部分

Post方法的參數,如果提交的請求體需要是phoneNum=123&password=123這樣的格式。如果用string AddNew(string phoneNum, string password)這種普通參數會有很多的坑(參考《C#進階系列—— WebApi 接口參數不再困惑:傳參詳解》),所以不要用。都用模型對象,public string AddNew2(LoginModel model),也可以參數標注[FromBody]:public string AddNew2([FromBody]LoginModel model)。(只能有一個參數標注FromBody)。

[HttpPost]
        public bool Login4(LoginModel model)//也可以參數標注[FromBody]LoginModel model
        {
            if (model.phoneNum == "123" && model.password == "123")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
View Code

2.通過自定義路由規則來捕獲參數

WebAPI可以通過[Route]和[RoutePrefix]來自定義路由,[RoutePrefix]作用於Controller,[Route]作 用於Action,一旦一個Controller或者Action設置了[Route]、[RoutePrefix]那么設置的routeTemplate講在 這個Controller或者Action中就不起作用了。

(1)[Route]自定義路由

[Route("Login/{phoneNum}/{password}")]
        [HttpGet]
        public string Login5(string phoneNum, string password)
        {
            return string.Format("Login5-->phoneNum:{0},password:{1}", phoneNum, password);
        }
View Code

(2)每個方法都[Route]自定義太麻煩,[RoutePrefix]作用於Controller適用內部所有方法

//當然每個Action都設定api/Login很麻煩,可以在Controller上標注[RoutePrefix("api/Login")](路徑不能以/結尾)
    [RoutePrefix("api/Login")]
    public class LoginController : ApiController
    {
        [HttpGet]
        public string LoginAction(string phoneNum, string password)
        {
            return string.Format("Login-->phoneNum:{0},password:{1}", phoneNum, password);
        }
    }
View Code

 

 

總結:

1.如果使用 Post 請求,那么就需要每個方法都聲明一個參數對應的類,參數前可標注[FromBody]。

2.如果使用 Get 請求,那么參數比較自由,但是需要注意防范緩存(使用 ajax 的話加上一個當前時間或者 隨機數的參數,使用 HttpClient 等需要禁用緩存)。

3.如果用 Get 方式,參數既可以用普通參數也可以用模型類參數,需要注意防止緩存;如 果 用 Post 方 式 , 參 數 一 定 要 用 模 型 類 , 客 戶 端 既 可 以 用 ContentType=” application/x-www-form-urlencoded”提交表單,也可以用 ContentType=”application/json”提交。

4.路由設置的話根據項目情況設置,適合的才是好的,切記不要搞得太亂。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM