mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-08 06:59:26 +08:00
fix(client): get api url (#4161)
* fix(client): get api url * fix: trim /
This commit is contained in:
parent
333fe8d8f4
commit
b25db239a3
@ -168,20 +168,24 @@ export class Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getPublicPath() {
|
getPublicPath() {
|
||||||
return this.options.publicPath || '/';
|
let publicPath = this.options.publicPath || '/';
|
||||||
|
if (!publicPath.endsWith('/')) {
|
||||||
|
publicPath += '/';
|
||||||
|
}
|
||||||
|
return publicPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
getApiUrl(pathname = '') {
|
getApiUrl(pathname = '') {
|
||||||
let baseURL = this.apiClient.axios['defaults']['baseURL'];
|
let baseURL = this.apiClient.axios['defaults']['baseURL'];
|
||||||
if (!baseURL.startsWith('http://') || !baseURL.startsWith('https://')) {
|
if (!baseURL.startsWith('http://') && !baseURL.startsWith('https://')) {
|
||||||
const { protocol, host } = window.location;
|
const { protocol, host } = window.location;
|
||||||
baseURL = `${protocol}//${host}/`;
|
baseURL = `${protocol}//${host}${baseURL}`;
|
||||||
}
|
}
|
||||||
return baseURL + pathname;
|
return baseURL.replace(/\/$/g, '') + '/' + pathname.replace(/^\//g, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
getRouteUrl(pathname: string) {
|
getRouteUrl(pathname: string) {
|
||||||
return this.getPublicPath().replace(/\/$/g, '') + pathname;
|
return this.getPublicPath() + pathname.replace(/^\//g, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
getCollectionManager(dataSource?: string) {
|
getCollectionManager(dataSource?: string) {
|
||||||
|
@ -33,6 +33,47 @@ describe('Application', () => {
|
|||||||
expect(Object.keys(app.components).length).toBeGreaterThan(1);
|
expect(Object.keys(app.components).length).toBeGreaterThan(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getApiUrl', () => {
|
||||||
|
it('api path', () => {
|
||||||
|
const app = new Application({
|
||||||
|
apiClient: {
|
||||||
|
baseURL: '/api/',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const { protocol, host } = window.location;
|
||||||
|
const baseURL = `${protocol}//${host}/api/`;
|
||||||
|
expect(app.getApiUrl()).toBe(baseURL);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('api url', () => {
|
||||||
|
const app = new Application({
|
||||||
|
apiClient: {
|
||||||
|
baseURL: 'http://localhost:13000/foo/api/',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(app.getApiUrl()).toBe('http://localhost:13000/foo/api/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('api url', () => {
|
||||||
|
const app = new Application({
|
||||||
|
apiClient: {
|
||||||
|
baseURL: 'https://123.1.2.3:13000/foo/api/',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(app.getApiUrl()).toBe('https://123.1.2.3:13000/foo/api/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('api url', () => {
|
||||||
|
const app = new Application({
|
||||||
|
apiClient: {
|
||||||
|
baseURL: 'https://123.1.2.3:13000/foo/api',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(app.getApiUrl('/test/bar')).toBe('https://123.1.2.3:13000/foo/api/test/bar');
|
||||||
|
expect(app.getApiUrl('test/bar')).toBe('https://123.1.2.3:13000/foo/api/test/bar');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('publicPath', () => {
|
describe('publicPath', () => {
|
||||||
it('default', () => {
|
it('default', () => {
|
||||||
const app = new Application({});
|
const app = new Application({});
|
||||||
@ -42,14 +83,16 @@ describe('Application', () => {
|
|||||||
|
|
||||||
it('custom', () => {
|
it('custom', () => {
|
||||||
const app = new Application({ publicPath: '/admin' });
|
const app = new Application({ publicPath: '/admin' });
|
||||||
expect(app.getPublicPath()).toBe('/admin');
|
expect(app.getPublicPath()).toBe('/admin/');
|
||||||
expect(app.getRouteUrl('/test')).toBe('/admin/test');
|
expect(app.getRouteUrl('/test')).toBe('/admin/test');
|
||||||
|
expect(app.getRouteUrl('test')).toBe('/admin/test');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('custom end with /', () => {
|
it('custom end with /', () => {
|
||||||
const app = new Application({ publicPath: '/admin/' });
|
const app = new Application({ publicPath: '/admin/' });
|
||||||
expect(app.getPublicPath()).toBe('/admin/');
|
expect(app.getPublicPath()).toBe('/admin/');
|
||||||
expect(app.getRouteUrl('/test')).toBe('/admin/test');
|
expect(app.getRouteUrl('/test/foo')).toBe('/admin/test/foo');
|
||||||
|
expect(app.getRouteUrl('test/foo/')).toBe('/admin/test/foo/');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user