umi call 后端 api

本文介绍如何使用UmiRequest来封装ServiceAPI,并实现参数转换。通过具体示例展示了从UI触发事件到调用ServiceAPI的过程,以及如何生成与维护API代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主思路

使用 umi request包装的service api,并且做好参数交换。

详情

如果已经有swagger openapi json就可以先生成代码和mock,但是不一定会很理想,可能要做细调,这意味着如果api再进行改动可能就是要人工调整了。如果没有就只能手写了

一般生成在src/services/下,配置在config.ts

  openAPI: [
    {
      requestLibPath: "import { request } from 'umi'",
      schemaPath: join(__dirname, 'api.json'),
      mock: true,
      projectName: 'api',
    },
  ],

调用顺序

UI event/trigger(比如点击,提交之类) -> UI内部func -> service api -> umi request

这中间需要匹配参数,如果比较频繁使用可以考虑定义type,方便使用

// UI event/trigger
        <LoginForm
          onFinish={async (values) => {
            await handleSubmit(values);
          }}
        >
        </LoginForm>

// UI内部 func
import { AuthLogin } from '@/services/api/Auth';

    const handleSubmit = async (values: Record<string, any>) => {
    try {
      const { username, password } = values;
      // 登录
      const msg = await AuthLogin({ username: username, password: password });
    } catch (error) {
      const defaultLoginFailureMessage = intl.formatMessage({
        id: 'pages.login.failure',
      });
      message.error(defaultLoginFailureMessage);
    }
  };                         

// service api
import { request } from 'umi';

export async function AuthLogin(
  body: {
    device_id?: string;
    password: string;
    username: string;
  },
  options?: { [key: string]: any },
) {
  return request<{
    id: number;
    nickname?: string;
    username?: string;
  }>('/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

参考

umi官方 @umijs/plugin-request

antd pro官方 网络请求 - Ant Design Pro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值