Aspnet Mvc 前后端分離項目手記(三)關於restful 風格Url設計


RESTful  不是新東西,簡單理解它的核心思想就是最大程度的利用http協議的一些特點,比如uri,比如請求動詞,在前后端分離的項目中會有大大的好處

好的設計的url簡單明了,勝過詳細的說明文檔。關於介紹Restful的好文章也有很多  http://www.ruanyifeng.com/blog/2014/05/restful_api.html

看幾個不錯的restful風格的url設計,你就明白什么時restful風格了

1,豆瓣電影

https://movie.douban.com/subject/27179414/?from=showing

編號27179414的項目

編號27179414 電影的演員表  https://movie.douban.com/subject/27179414/celebrities

 

是不是很明了,一看url就知道他的內容

 

 

 

 

 

下面是在asp.net mvc中實踐restful 的一點總結 ,項目沒有使用webapi 

 

首先,IIS默認是禁止Delete,Put等請求的,如果沒有事先配置的話會報404

解決辦法一:在web.config中標注module節點  <modules runAllManagedModulesForAllRequests="true" runManagedModulesForWebDavRequests="true">

 

 方法二:如果上述方法還是不奏效的話

可以直接在控制面板》》程序或功能》》啟用或關閉Windows功能中關閉除WebDev模塊

 

 在這里,取消【WebDAV發布】的勾選就行,

 

 

 

啟用是路由特性, 使用restful時有時候會自定義一些路由映射, 在RouteConfig中加入  routes.MapMvcAttributeRoutes();

關於路由特性也有一些很詳細的文章  https://www.cnblogs.com/zeusro/p/RouteConfig.html

 

 

在URL中添加版本號

1 url中要有版本號  比如     https://api.demo.com/v1/controller/action  ,   也就是說要設置全局的路由 

 

方法一, 添加區域, 

方法二, 在IIS添加應用程序

      在IIS里面添加網站的時候,不直接添加,二十添加一個空文件夾,然后再在里面添加應用程序

 

 

 

方法三,定義全局路由

定義全局路由, 這篇文章有介紹  https://www.cnblogs.com/savorboard/p/dontnet-IApplicationModelConvention.html

 

 

 使用http動詞來表明來意

分別使用來對應增刪改查, url使用小寫 ,盡量使用名字而不是動賓短語 比如   獲取商品的url    /products  要好於 /product/getproduct

 

post (新增)

put (修改)

delete(刪除)

get(查詢)

  

 

添加一個商品   /product    post動詞

編輯商品   /product    put動詞

 

 刪除商品   /product    delete動詞

 

獲取商品列表 /products?page=1&pagesize=50   get動詞

獲取 ID為1的商品ID為3圖片   /product/1/img/3  get動詞

 

 

設置Id為1的商品價格為2    /product/1/setprice/2  post動詞

 

 

 

 restful缺點很多,在實際使用過程中其實很難做到完全遵循,這個時候千萬不能生搬硬套,他並不是一個硬性的規定,只是一種風格,不用restful或者不嚴格使用都是完全沒有問題的

 


免責聲明!

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



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