You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2020/06/05 10:03:08 UTC

[incubator-apisix-dashboard] branch next updated: feat: updated api (#245)

This is an automated email from the ASF dual-hosted git repository.

juzhiyuan pushed a commit to branch next
in repository https://gitbox.apache.org/repos/asf/incubator-apisix-dashboard.git


The following commit(s) were added to refs/heads/next by this push:
     new 212e817  feat: updated api (#245)
212e817 is described below

commit 212e8174413c646044feaa45336cc8d1b118854a
Author: 琚致远 <ju...@apache.org>
AuthorDate: Fri Jun 5 18:02:02 2020 +0800

    feat: updated api (#245)
---
 src/pages/Routes/Create.tsx                        |  4 +-
 .../Routes/components/Step2/RequestRewriteView.tsx | 15 ++++---
 src/pages/Routes/constants.ts                      |  2 +-
 src/pages/Routes/service.ts                        |  6 +--
 src/pages/Routes/transform.ts                      | 47 +++++++++-------------
 src/pages/Routes/typing.d.ts                       |  3 +-
 6 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/src/pages/Routes/Create.tsx b/src/pages/Routes/Create.tsx
index 4240d53..424ed6e 100644
--- a/src/pages/Routes/Create.tsx
+++ b/src/pages/Routes/Create.tsx
@@ -55,7 +55,9 @@ const Create: React.FC = (props) => {
     if ((props as any).route.name === 'edit') {
       initRoute((props as any).match.params.rid);
     }
+  }, []);
 
+  useEffect(() => {
     if (step1Data.redirectURI !== '') {
       setRedirect(true);
       setStepHeader(STEP_HEADER_2);
@@ -131,7 +133,7 @@ const Create: React.FC = (props) => {
     if (nextStep === 2) {
       if (redirect) {
         createRoute({ data: routeData }).then(() => {
-          return <ResultView onReset={onReset} />;
+          setStep(4);
         });
         return;
       }
diff --git a/src/pages/Routes/components/Step2/RequestRewriteView.tsx b/src/pages/Routes/components/Step2/RequestRewriteView.tsx
index 3c622e2..e9556c3 100644
--- a/src/pages/Routes/components/Step2/RequestRewriteView.tsx
+++ b/src/pages/Routes/components/Step2/RequestRewriteView.tsx
@@ -1,6 +1,6 @@
 import React from 'react';
 import Form, { FormInstance } from 'antd/es/form';
-import Radio, { RadioChangeEvent } from 'antd/lib/radio';
+import Radio from 'antd/lib/radio';
 import { Input, Row, Col, InputNumber, Button } from 'antd';
 import { PlusOutlined, MinusCircleOutlined } from '@ant-design/icons';
 
@@ -14,9 +14,6 @@ interface Props extends RouteModule.Data {
 
 const RequestRewriteView: React.FC<Props> = ({ data, form, disabled, onChange }) => {
   const { step2Data } = data;
-  const onProtocolChange = (e: RadioChangeEvent) => {
-    onChange({ upstreamProtocol: e.target.value });
-  };
 
   const renderUpstreamMeta = () => (
     <Form.List name="upstreamHostList">
@@ -101,10 +98,16 @@ const RequestRewriteView: React.FC<Props> = ({ data, form, disabled, onChange })
       >
         <Form.Item
           label="协议"
-          name="upstreamProtocol"
+          name="upstream_protocol"
           rules={[{ required: true, message: '请勾选协议' }]}
         >
-          <Radio.Group onChange={onProtocolChange} name="upstreamProtocol" disabled={disabled}>
+          <Radio.Group
+            onChange={(e) => {
+              onChange({ upstream_protocol: e.target.value });
+            }}
+            name="upstream_protocol"
+            disabled={disabled}
+          >
             <Radio value="keep">保持原样</Radio>
             <Radio value="http">HTTP</Radio>
             <Radio value="https">HTTPS</Radio>
diff --git a/src/pages/Routes/constants.ts b/src/pages/Routes/constants.ts
index 8d8d550..45f3af2 100644
--- a/src/pages/Routes/constants.ts
+++ b/src/pages/Routes/constants.ts
@@ -39,7 +39,7 @@ export const DEFAULT_STEP_1_DATA: RouteModule.Step1Data = {
 };
 
 export const DEFAULT_STEP_2_DATA: RouteModule.Step2Data = {
-  upstreamProtocol: 'keep',
+  upstream_protocol: 'keep',
   upstreamHostList: [{} as RouteModule.UpstreamHost],
   upstreamHeaderList: [],
   upstreamPath: undefined,
diff --git a/src/pages/Routes/service.ts b/src/pages/Routes/service.ts
index 247f45b..a7e5b5c 100644
--- a/src/pages/Routes/service.ts
+++ b/src/pages/Routes/service.ts
@@ -8,15 +8,15 @@ export const createRoute = (data: Pick<RouteModule.Data, 'data'>) =>
     data: transformStepData(data),
   });
 
-export const updateRoute = (rid: number, data: Pick<RouteModule.Data, 'data'>, wid: number = 0) =>
+export const updateRoute = (rid: number, data: Pick<RouteModule.Data, 'data'>, wid = 0) =>
   request(`/workspaces/${wid}/routes/${rid}`, {
     method: 'PUT',
     data: transformStepData(data),
   });
 
-export const fetchRoute = (rid: number, wid: number = 0) =>
+export const fetchRoute = (rid: number, wid = 0) =>
   request(`/workspaces/${wid}/routes/${rid}`).then((data) => transformRouteData(data));
 
-export const fetchRouteList = (wid = 0) => request(`/workspaces/${wid}/routes`);
+export const fetchRouteList = (wid = 0) => request(`/workspaces/${wid}/routes?page=1&size=100000`);
 
 export const removeRoute = (rid: number, wid = 0) => request(`/workspaces/${wid}/routes/${rid}`);
diff --git a/src/pages/Routes/transform.ts b/src/pages/Routes/transform.ts
index a29965b..008e41e 100644
--- a/src/pages/Routes/transform.ts
+++ b/src/pages/Routes/transform.ts
@@ -16,9 +16,7 @@ export const transformStepData = ({
   let redirect: RouteModule.Redirect = {};
   if (step1Data.forceHttps) {
     redirect = { redirect_to_https: true };
-  }
-
-  if (step1Data.redirectURI !== '') {
+  } else if (step1Data.redirectURI !== '') {
     redirect = {
       code: step1Data.redirectCode,
       uri: step1Data.redirectURI,
@@ -67,29 +65,24 @@ export const transformStepData = ({
     };
   }
 
-  const transformData = omit(data, [
-    'advancedMatchingRules',
-    'upstreamProtocol',
-    'upstreamHostList',
-    'upstreamPath',
-    'upstreamHeaderList',
-    'websocket',
-    'timeout',
-    'redirectURI',
-    'redirectCode',
-    'forceHttps',
-  ]);
-
-  if (step1Data.redirectURI !== '') {
-    return pick(transformData, [
-      'protocols',
-      'hosts',
-      'uris',
-      'methods',
+  // 未启用 redirect
+  if (!redirect.uri && !redirect.redirect_to_https) {
+    // 移除前端部分自定义变量
+    return omit(data, [
       'redirect',
-    ]) as RouteModule.Body;
+      'advancedMatchingRules',
+      'upstreamHostList',
+      'upstreamPath',
+      'upstreamHeaderList',
+      'websocket',
+      'timeout',
+      'redirectURI',
+      'redirectCode',
+      'forceHttps',
+    ]);
   }
-  return transformData;
+
+  return pick(data, ['name', 'desc', 'protocols', 'hosts', 'uris', 'methods', 'redirect', 'vars']);
 };
 
 const transformVarsToRules = (
@@ -130,12 +123,12 @@ export const transformRouteData = (data: RouteModule.Body) => {
     forceHttps: Boolean(redirect.redirect_to_https),
   };
 
-  if (redirect.code) {
+  if (redirect.uri) {
     step1Data.redirectCode = redirect.code;
     step1Data.redirectURI = redirect.uri;
   }
 
-  const { upstream, upstream_path, upstream_header } = data;
+  const { upstream, upstream_path, upstream_header, upstream_protocol } = data;
 
   const upstreamHeaderList = Object.entries(upstream_header).map(([k, v]) => {
     return {
@@ -147,7 +140,7 @@ export const transformRouteData = (data: RouteModule.Body) => {
   });
 
   const step2Data: RouteModule.Step2Data = {
-    upstreamProtocol: 'keep',
+    upstream_protocol,
     upstreamHeaderList,
     upstreamHostList: transformUpstreamNodes(upstream.nodes),
     upstreamPath: upstream_path.to,
diff --git a/src/pages/Routes/typing.d.ts b/src/pages/Routes/typing.d.ts
index 9d28d4b..a19273b 100644
--- a/src/pages/Routes/typing.d.ts
+++ b/src/pages/Routes/typing.d.ts
@@ -66,7 +66,7 @@ declare namespace RouteModule {
   }
 
   type Step2Data = {
-    upstreamProtocol: 'http' | 'https' | 'keep';
+    upstream_protocol: 'http' | 'https' | 'keep';
     upstreamHostList: UpstreamHost[];
     upstreamPath: string | undefined;
     upstreamHeaderList: UpstreamHeader[];
@@ -112,6 +112,7 @@ declare namespace RouteModule {
       from?: string;
       to: string;
     };
+    upstream_protocol: 'keep' | 'http' | 'https';
     upstream_header: {
       [key: string]: string;
     };