詳解.net core webapi 前后端開發(fā)分離后的配置和部署
背景:現(xiàn)在越來越多的企業(yè)都采用了在開發(fā)上前后端分離,前后端開發(fā)上的分離有很多種,那么今天,我來分享一下項(xiàng)目中得的前后端分離。
B/S Saas 項(xiàng)目:(這個項(xiàng)目可以理解成個人中心,當(dāng)然不止這么點(diǎn)功能)
前端:node.js + vue
后端:.net core webapi
前端安裝 node.js 跟創(chuàng)建vue項(xiàng)目這些不是這篇文章的重點(diǎn),重點(diǎn)在于項(xiàng)目完成后的部署。
.net corewebapi創(chuàng)建后,默認(rèn)就創(chuàng)建了一個wwwroot的文件夾,這個文件夾是用來放置靜態(tài)文件的,所以,我們可以理解成,這個文件夾將放置我們的build好的前端項(xiàng)目。
OK,到現(xiàn)在來講,有一個很有意思的發(fā)現(xiàn)(也可以是一點(diǎn)意思都沒有,因?yàn)槎际峭粋€爸生的),這項(xiàng)目的部署跟mvc的部署的很像(這里不涉及底層運(yùn)行,只是一個發(fā)布后簡單的像而已)。
由上圖就足夠清晰了,這樣的部署是屬于開發(fā)上的前后端分離,他們同屬于一個站點(diǎn),綁定同一個域名,所以不涉及跨域,外部不能直接調(diào)用webapi(安全上還是有保證D)。
那么這樣的部署卻很簡單,僅僅是在 Startup 里面的 Configure 設(shè)置 一下即可
//設(shè)置主頁 app.UseDefaultFiles(); //這個是.net core webapi 訪問wwwroot文件夾的配置,開啟靜態(tài)文件 app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "api/{controller=Login}/{action=Get}/{id?}"); });
1、首先是設(shè)置主頁
這里直接使用的是默認(rèn)的,就是UseDefaultFiles 會重定向到default.htm、default.html、index.htm、index.html。當(dāng)然你也可以指定設(shè)置的首頁(指定的頁面是可以自定義的!)
//設(shè)置主頁 DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions(); defaultFilesOptions.DefaultFileNames.Clear(); defaultFilesOptions.DefaultFileNames.Add("index.html"); app.UseDefaultFiles(defaultFilesOptions);
這樣就設(shè)定了重定向到index.html,那為什么前面用了Clear,其實(shí)個人認(rèn)為僅僅是為了保險,因?yàn)?/p>
2、開啟靜態(tài)文件,UseDefaultFiles 僅僅是一個重定向URL而不是真的提供一個文件,真正提供靜態(tài)文件的還是UseStaticFiles。這就是為什么要優(yōu)先設(shè)置 UseDefaultFiles 再到UseStaticFiles的原因。當(dāng)然,提供靜態(tài)文件也提供了多個重載,可以提供一個相對路徑,還有靜態(tài)文件目錄的選擇。
//這個是.net core webapi 訪問wwwroot文件夾的配置,開啟靜態(tài)文件 StaticFileOptions staticFileOptions = new StaticFileOptions(); staticFileOptions.FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(@"D:\testsite\wwwroot\");//指定目錄你站點(diǎn)api的要訪問的wwwroot目錄 app.UseStaticFiles(staticFileOptions);
上面這種寫法也同樣可以,當(dāng)然指定的目錄也同樣可以放到配置文件里面去,但是這種做法一般都放在類似FTP的項(xiàng)目上。因?yàn)槿绻侵付ǖ哪夸浢撾x了 webapi 項(xiàng)目 wwwroot ,甚至是 wwwroot 下的文件夾都不可以訪問到靜態(tài)頁面的。
3、使用MVC并配置路由,開啟了靜態(tài)文件的訪問之后,就交由mvc來處理了,這個是webapi項(xiàng)目,所以配置api的路由就可以了。(除了上面的1、2順序不可以改變之外,mvc中配置的路由所放置的順序倒沒影響,因?yàn)檫@不是一個mvc項(xiàng)目)
好了,前后端都開發(fā)好之后,部署到服務(wù)器,僅是上面在Startup的配置即可。.net core 還是非常非常方便的。
正常訪問!一點(diǎn)問題都沒有,就算是有問題,也是代碼的問題了,噢哈哈
以上所述是小編給大家介紹的.net core webapi 前后端開發(fā)分離后的配置和部署詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Jetson nano配置VNC實(shí)現(xiàn)過程圖解
- 詳解如何使用Docker部署Django+MySQL8開發(fā)環(huán)境
- Spring Boot 開發(fā)環(huán)境熱部署詳細(xì)教程
- vue項(xiàng)目打包之開發(fā)環(huán)境和部署環(huán)境的實(shí)現(xiàn)
- 4種Windows系統(tǒng)下Laravel框架的開發(fā)環(huán)境安裝及部署方法詳解
- Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解
- vue-router啟用history模式下的開發(fā)及非根目錄部署方法
- Jetson tk2開發(fā)部署實(shí)現(xiàn)過程圖解
相關(guān)文章
.NETCore基于RabbitMQ實(shí)現(xiàn)延時隊(duì)列的兩方法
這篇文章主要介紹了.NETCore基于RabbitMQ實(shí)現(xiàn)延時隊(duì)列的兩方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09ASP.NET WebForm中<%=%>與<%#%>的區(qū)別
這篇文章主要介紹了ASP.NET WebForm中<%=%>與<%#%>的區(qū)別,需要的朋友可以參考下2015-01-01asp.net下Linq To Sql注意事項(xiàng)小結(jié)
對于Linq 連接數(shù)據(jù)庫進(jìn)行操作時需注意的問題2008-10-10ajaxToolkit:AccordionPane演示與應(yīng)用實(shí)例
ajaxToolkit:AccordionPane演示與應(yīng)用實(shí)例,需要的朋友可以參考一下2013-04-04用.NET 2.0壓縮/解壓功能處理大型數(shù)據(jù)
用.NET 2.0壓縮/解壓功能處理大型數(shù)據(jù)...2006-09-09在 .NET Framework 2.0 中未處理的異常導(dǎo)致基于 ASP.NET 的應(yīng)用程序意外退出
如果在 Microsoft .NET Framework 2.0 上構(gòu)建的基于 Microsoft ASP.NET 的應(yīng)用程序中引發(fā)未處理的異常,該應(yīng)用程序?qū)馔馔顺觥H绻霈F(xiàn)這個問題,不會在應(yīng)用程序日志中記錄了解此問題所必需的異常信息。2009-11-11使用SNK密鑰文件保護(hù)你的DLL和代碼不被反編譯教程
這篇文章主要介紹了使用SNK密鑰文件保護(hù)你的DLL和代碼不被反編譯教程, SNK,作為程序后綴的時候,是.net中的強(qiáng)密匙加密文件,需要的朋友可以參考下2014-09-09