amis icon indicating copy to clipboard operation
amis copied to clipboard

1.9版本全局api的适配器配置是修改么?没生效

Open mrsmallyi opened this issue 2 years ago • 3 comments

实现场景:

我升级了最新版本1.9.0版本,发现全局api适配器配置了没响应,页面直接卡死

存在的问题:

请求等待相应,页面卡死

当前方案:

当前暂时在请求api里面加,但是这样不是很方便

      // 全局 api 请求适配器
            // 另外在 amis 配置项中的 api 也可以配置适配器,针对某个特定接口单独处理。
            requestAdaptor: (api) => {
              return api;
            },
            //
            // 全局 api 适配器。
            // 另外在 amis 配置项中的 api 也可以配置适配器,针对某个特定接口单独处理。
            responseAdaptor: (api, payload, query, request, response) => {
              console.log(api, payload, response)
              return {
                ...payload,
                status: payload.code === 200 ? 0 : payload.code
              };
            },

mrsmallyi avatar May 19 '22 07:05 mrsmallyi

只是加了个第五个参数,按理没不会影响原来的,卡死具体是指啥?

2betop avatar May 20 '22 07:05 2betop

只是加了个第五个参数,按理没不会影响原来的,卡死具体是指啥? 接口请求等待,loading直接停止了,页面静止,没响应了 image image

mrsmallyi avatar May 20 '22 08:05 mrsmallyi

@nwind @2betop 麻烦确认下,全局请求响应拦截配置新的版本确实用不了啊

mrsmallyi avatar Jul 28 '22 03:07 mrsmallyi

亲测有用,请确保 env 是 amis.embed 的第四个参数传进去的,如果是第三个是没用的。

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <title>amis demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1"
    />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <link rel="stylesheet" href="./node_modules/amis/sdk/sdk.css" />
    <link rel="stylesheet" href="./node_modules/amis/sdk/helper.css" />
    <link rel="stylesheet" href="./node_modules/amis/sdk/iconfont.css" />
    <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
    <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
    <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
    <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
    <style>
      html,
      body,
      .app-wrapper {
        position: relative;
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="root" class="app-wrapper"></div>
    <script src="./node_modules/amis/sdk/sdk.js"></script>
    <script type="text/javascript">
      (function () {
        let amis = amisRequire("amis/embed");
        // 通过替换下面这个配置来生成不同页面
        let amisJSON = {
          type: "page",
          title: "表单页面",
          body: {
            type: "form",
            mode: "horizontal",
            api: "/saveForm",
            body: [
              {
                label: "Name",
                type: "input-text",
                name: "name",
              },
              {
                label: "Email",
                type: "input-email",
                name: "email",
              },
            ],
          },
        };
        let amisScoped = amis.embed("#root", amisJSON, {}, {
          responseAdaptor(api, payload, query, request, response) {
            debugger;
            console.log(api);
            return payload;
          },
        });
      })();
    </script>
  </body>
</html>

2betop avatar Sep 30 '22 12:09 2betop

在react项目中全局使用responseAdaptor不生效是什么原因?

zlwaiwjj avatar Jun 05 '23 08:06 zlwaiwjj

@zlwaiwjj 解决了吗。我这里也不生效

mengxiangji avatar Nov 03 '23 09:11 mengxiangji