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


1.當我們創建WebApi的時候我們的項目下的Contorls文件夾下的ValuesController文件下會出現這么幾個方法:

// GET http://程序ip:程序端口/api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET http://程序ip:程序端口/api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST http://程序ip:程序端口/api/values
        public void Post([FromBody]string value)
        {
        }

        // PUT http://程序ip:程序端口/api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE http://程序ip:程序端口/api/values/5
        public void Delete(int id)
        {
        }
View Code

使用Postman工具及谷歌瀏覽器請求后分別獲取到如下結果:(后期將統一使用Postman自己到網上下載或到這里我提供的安裝包網站下載

是不是發現webapi請求語法並不是那么的好用,為了讓其更符合我們的使用習慣,那么我們開始設計路由吧!

2.修改路由規則,使得使用更符合我們平常使用MVC的設計程序的習慣:

(1) 將routeTemplate: "api/{controller}/{id}",修改為routeTemplate: "api/{controller}/{action}/{id}",

 

(2) 之后你就發現我們也需要傳方法名稱才可以到指定的方法了,你是不是已經會自己配置路由了

 3.上面已經教大家如何修改全局路由了,那么修改完后我們在get請求的要這樣使用,其中model模型自己創建哦

(1) 方法

//1、 Get 方法的參數。http://程序ip:程序端口/api/values/Login?phoneNum=123&password=123
        [HttpGet]
        public string Login(string phoneNum, string password)
        {
            return string.Format("phoneNum:{0},password:{1}", phoneNum, password);
        }
        //這樣寫就行
        //如果用模型對象,則必須標注[FromUri],http://程序ip:程序端口/api/values/Login?phoneNum=123&password=123
        [HttpGet]
        public bool Login2([FromUri]LoginModel model)
        {
            if (model.phoneNum =="123" && model.password == "123")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
View Code

(2)model對象

public class LoginModel
    {
        public string userName { get; set; }
        public string phoneNum { get; set; }
        public string password { get; set; }
    }
View Code

是不是和MVC中的使用基本一樣了呢?

注意:如果參數用模型對象,則必須標注[FromUri]不然你會獲取不到值呢!

原因分析:還記得有面試題問過get和post請求的區別嗎?其中有一個區別就是get請求的數據會附在URL之后(就是把數據放置在HTTP協議頭中),而post請求則是放在http協議包的包體中。

 


免責聲明!

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



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