后台web端的react

时间:2023-03-10 05:30:06
后台web端的react

在api.js里,存放着各种功能引用的方法,比如这个fakeRegister,里面传参数params,返回要要调回的地址,${HOST1}/user/register

requset会返回codemessage,如果是401或402,则是我这边的错误,可能用户名密码不正确,可能路由的路径有问题。

export async function fakeRegister(params) {
  return request(`${HOST1}/user/register`,{
  /* return request('/api/register', { */
    method: 'POST',
    body: params,
  });
}

有两个register,models里面的是方法,user里面的是页面。

user里面的register,就是react组件三步走,引入依赖,创建虚拟dom并利用render渲染,最后暴露出组件。这里面定义了userName的文本框。

models里面的register,是提交的数据值,进行验证。submit提交了两个参数,

之前关于这个username我这边读取到的总是undefined,是因为我这边忘了驼峰命名法,应该是userName! 而这个userName的定义就是在user里面定义的,因为写的是js,要用驼峰法,所以,payload.userName一定要写对才行。

 *submit({ payload }, { call, put }) {
      var params = {"password": "qyh",
        "username": "qyh"}
        payload.password='qyh';
        payload.userName='qyh';        

      const response = yield call(fakeRegister, payload);
      yield put({
        type: 'registerHandle',
        payload: response,
      });
    },
  },

上面这个写法,吧params都给写死了。

下面这个写法,让params等于payload里传过来的值。下面这个写法才是对的。上面这个写法根本无意义啊。

*submit({ payload }, { call, put }) {
      let params={
        "username":payload.userName,
        "password":payload.password
      }

      const response = yield call(fakeRegister, params);
      yield put({
        type: 'registerHandle',
        payload: response,
      });
    },
  },
*login({ payload }, { call, put }) {
      var params = {"login_type": "usernameAndPassword",
      "credentials": {
        "username": payload.userName,
        "password": payload.password
      }}
      payload.login_type = 'usernameAndPassword';
      payload.credentials = {
        "username": payload.userName,
        "password": payload.password
      };

如果返回的code是500,就是后台的问题,不是我的问题,正常返回得是200.

徐瀚师傅自己写了一个方法,叫port,用来传url前面的值。port为true的话,就是前面的url,否则就是后面的。

方法:
// 分开两个端口 参数为true的话则为9099端口
export function port(isLogin) {
  let host;
  if (!isProduction()) {
    isLogin ? host = 'http://192.168.1.103:9099' : 'http://192.168.1.103:8099';
  }
  return host;
}
// true为生产环境 false为开发环境
export function isProduction() {
  return process.env.NODE_ENV === 'production';
}

使用:
import { port } from '../utils/utils';

export async function fakeAccountLogin(params) { 

  return request(port(true)+'/login', {
    method: 'POST',
    body: params,
  });
}

export async function fakeRegister(params) {
      return request(port(true)+'/user/register',{
    method: 'POST',
    body: params,
  });
}