對前后端分離如何調用接口這塊感覺一直沒怎么弄明白,但又不知如何說明,下面我模擬一個項目說明我的問題。
現在我們有個項目,前端用vue開發(fā),后端php開發(fā),后端測試地址為:localhost:8181,項目服務器地址是:www.cocoy.com。在開發(fā)階段模擬數據(userdata.json)是放在static文件夾里,而在后端與userdata.json對應的文件userdata.php是在abc文件夾里的。
我的問題是:在開發(fā)階段讀取數據是這樣的:get("../static/userdata.json"),那在測試階段是不是要改成:get("http://localhost:8181/abc/userdata.php")。在生產環(huán)境把數據傳到服務器后又該怎么讀取數據,難道是:get("http://www.cocoy.com/abc/userdata.php")?
還是說傳到服務器后前端和后端的文件分別放在不同的文件夾里,然后前端調用后端接口直接這樣:get("../后端文件夾/abc/userdata.php")?如果是這樣的話是不是只要將vue的設置文件里將static名稱改一下就可以了?
對這塊一直沒弄明白,希望大佬能解釋透徹一點,感激不盡?。?!
先定義接口文檔, 如
| 用戶列表 | |
|---|---|
| 地址 | /api/users |
| 請求方式 | GET |
| 請求參數 | 類型 | 是否必填 | 說明 |
|---|---|---|---|
| type | int | N | 用戶類型 |
| name | string | N | 用戶名稱 |
| ... |
| 響應結果 | 類型 | 格式 | 說明 |
|---|---|---|---|
| ret | int | 200 | 登錄成功 |
| int | 201 | 登錄失敗 | |
| msg | string | 請求結果信息 | |
| total | int | 滿足條件的數據條數 | |
| userList | Array<userInfo> | 用戶列表 |
| userInfo | 字段 | 類型 | 格式 | 說明 |
|---|---|---|---|---|
| username | string | 用戶名稱 | ||
| id | string | 用戶id | ||
| ... |
eg.
請求JSON:
{
"name": "wanghaiyang",
"type": 1
}
響應JSON:
{
"ret": 200,
"msg": "success",
"userList": [
{
"username": "wanghaiyang",
"id": "12345676543"
}
...
],
"total": 1000
}
如果部署在同一臺服務器, 前端文件放在 Web服務器根目錄, 直接 get(/api/users) 接口就應該返回對應的 json 數據, 跟后臺配置相關, 不管你 php 文件放在何處
經過仔細琢磨終于搞清楚是怎么弄的了,記錄在這里以備不時之需,如果有什么錯誤希望大家指正。
現在假設項目后端接口地址:192.168.0.15/abc/data.php,打開config/index.js,設置proxyTable屬性:
proxyTable: {
'/abc': {
target: 'http://192.168.0.15', // 接口的域名
// secure: false, // 如果是https接口,需要配置這個參數
changeOrigin: true, // 如果接口跨域,需要進行這個參數配置
pathRewrite: {
'^/abc': '/abc'
}
}
}
注意,上面代碼中abc不是隨便起的名字,它和后端接口地址的文件夾要一致,這樣當你打包的時候就不會出錯。
然后用axios引用接口:axios("/abc/data.php")。這樣在開發(fā)環(huán)境中就可以直接引用后端接口。npm run build打包后將dist里的文件復制到后端根目錄中,不需要更改任何代碼直接就可以調用后端abc/data.php接口。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。