2017年5月9日 星期二

不是姐Client JS不支援patch,put,delete,是哥server端不支援吶~


最近在改版公司的社團內容,包含前後台(權限bra bra.....)

這種響應式網頁,其實打從小的開始在江湖打混以來,做過類似的東西應該也超過上百次
(英語:Responsive web design,通常縮寫為RWD)

但RWD、CRUD這些相關的名詞,卻是近幾年才開始炒熱出現的名詞

有些人其實一直在做RWD or CRUD的事只是他們自己不知道


restful 風格在這有很清楚的描述->http://www.restapitutorial.com/lessons/httpmethods.html

 偶爾發現某些網站的網址,會跟隨著內容和action改變

 這樣會很清楚說現在我在網站的哪個位置、哪個功能 ~ 當下覺得超酷的


透過MVC的[RouteAttribute]公開路由設定,來達到restful網址設定

 再搭配HttpAction(GET、POST、PATCH、PUT、DELETE),透過action來指定在MVC裡的controller哪個 action

 在這裡說明一下這些action的差別 連結已在左邊
get:取得我們想要的資料。
post:新增一項資料。(如果存在會新增一個新的)
put:新增一項資料,如果存在就覆蓋過去。(還是只有一筆資料)。
patch:附加新的資料在已經存在的資料後面。(資料必須已經存在,patch會擴充這項資料)
delete:刪除資料。

 但問題來了,IIS幾乎都不支援PATCH、PUT、DELETE的ajax method啊~~~








通常可以透過更改IIS設定來達到支援patch等的功能,不過如果不想影響IIS上的設定進而影響了其他WEB
 那就透過在web.config裡加入部份設定來達到支援patch,put,delete的目地

  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

BinGo,所以不是jquery不支援patch,put,delete,這跟jquery無關,因為jquery裡的ajax明明就可以自行定義method

 真正的前端是要連後端都有摸到才是真正叫前端,人不可能一人而活,程式也是

沒有留言:

張貼留言