用户中心3-前端登陆页访问后端接口修改

日期:2024.02.05 作者:31520-tfzhang

 

今天主要进行登录页的表单提交的变量及接口参数等的修改。

 

1、修改账户和密码变量:

登录页输入账户和密码后,数据会提交给后台,那这个提交过程具体是怎么样的呢?定位到源代码/user/Login/index.tsx中的onFinish方法:

此处就是打包表单数据,处理提交的入口。看下handleSubmit方法的源码,handleSubmit方法的参数是API.LoginParams:

根据我们后端的参数,首先将API.LoginParams修改为:

知识点:修改时建议光标移动到username(password),然后Shift+F6,这样可以同时全局修改,以免有遗漏修改的地方。

 

除了修改API.LoginParams结构,还要修改/user/login/index.tsx的登录表单数据;其中的代码:

上述的两个name变量要修改为对应的userAccountuserPassword。修改后代码如下:

 

2、设置login访问的参数

因为我们的后端登录接口为:

所以,我们要修改前端登录接口的url,其中端口号要修改为8080,ant design pro原来的端口为8000;

另外path要修改为/user/login。

2.1 path修改为/user/login

基于/user/login/index.tsx中的handleSubmit方法,我们追溯到如下的代码:

主要修改第2行代码,同时注释也顺便更新下;

注意:此处我们保留/api关键字,后续修改后端来匹配。

 

2.2 修改端口

我们要设置前端访问的url和接口,通过不断地深入源码,发现并没有哪里统一设定 localhost:8000,于是转而查找umi以及pro design的官方说明文档,其中ant design pro中相关内容:

所以,我们在app.tsx中增加如下的代码:

 

修改刷新,重新登录后,打开浏览器开发者工具,可以看到图1所示:

图3.1跨域截图

图1 跨域访问

什么是跨域问题?

跨域就是一个域名的网页去请求另一个域名的资源,两个请求的协议(比如http),域名(比如说localhost),端口号三者一模一样(其他可以不一样)才算两个请求在同一个域内,三者但凡有一个不一样都是跨域。比如在我们的案例中,登录页的地址是:

而我们的后端api地址是:

两者之间的端口号不一致,所以导致跨域问题,而浏览器为了保证网络安全,是不允许跨域访问的。

 

2.3 解决跨域问题

我们在前端解决跨域问题,在ant design pro中,包含一个配置代理的文件:/config/proxy.ts,根据提示我们的修改如下:

此处target设置为:

意味着:

如此的话,我们要将app.tsx中的requestConfig代码更新如下:

然后我们启动后端,假设localhost:8080/api/user/login接口已经通过测试,打开浏览器开发者模式,图2所示:

图3.2解决跨域问题

图2、解决跨域问题

可以发现已经解决跨域访问,其中的请求URL是8000端口,而真正访问的端口是8080,X-Real-Url所示。