RESTful 不是新東西,簡單理解它的核心思想就是最大程度的利用http協議的一些特色,好比uri,好比請求動詞,在先後端分離的項目中會有大大的好處html
,好的設計的url簡單明瞭,賽過詳細的說明文檔。關於介紹Restful的好文章也有不少 http://www.ruanyifeng.com/blog/2014/05/restful_api.htmlweb
看幾個不錯的restful風格的url設計,你就明白什麼時restful風格了後端
1,豆瓣電影api
https://movie.douban.com/subject/27179414/?from=showingrestful
編號27179414的項目mvc
編號27179414 電影的演員表 https://movie.douban.com/subject/27179414/celebritiesasp.net
是否是很明瞭,一看url就知道他的內容前後端分離
下面是在asp.net mvc中實踐restful 的一點總結 ,項目沒有使用webapi post
首先,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或者不嚴格使用都是徹底沒有問題的