项目场景:
在写小程序的过程中
在使用后端接口的时候,接口当中自己拼接了 /api, 领导查看后给删掉了
注意 :
- 红色是之前提交(也就是自己写的)
- 绿色是之后提交(也就是领导改动的)
疑问
这里的 api/ 为什么可以省略啊
来自领导的回答 : api/是web端代理前缀
来自领导的回答 : 小程序请求不需要代理
原因分析:
uni-app的h5/小程序/app 网络请求,解决本地环境和生产环境网络请求问题
思路:
首先要理解这三个端的特性,h5会有跨域问题需要反向代理,小程序和app不需要反向代理,同时小程序还得用https域名。
一、h5,
一般会跨域需要反向代理。所以要在mainifest.json设置反向代理。在请求接口时,还得拼个/api前缀
let url ='/api/system/login'
正式环境的话,会变成ip或域名前缀+/api/system/login,后端需要配置一下nginx代理,将api替换一下
二、小程序
不需要反向代理,直接请求。所以请求接口不需要拼api前缀。
但需要https域名,所以本地环境测试时开启‘不校验合法域名……’
小程序本地环境,request网络请求地址是后台服务地址,接口不要/api前缀
let url = BASE_URL + '/system/login'
小程序生产环境,request网络请求地址要https://域名,并且要api前缀,因为域名一般对应的是前端页面,域名+api后缀,api经过了后端nginx替换,就表示是后端服务地址
let url = BASE_URL + '/api/system/login'
三、app
不需要反向代理,直接请求。所以请求接口不需要拼api前缀
// #ifdef APP-PLUS
BASE_URL = "http://192.168.1.193:8999"
// #endif
let url = BASE_URL + '/system/login'