mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-07 14:39:25 +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() {
|
||||
return this.options.publicPath || '/';
|
||||
let publicPath = this.options.publicPath || '/';
|
||||
if (!publicPath.endsWith('/')) {
|
||||
publicPath += '/';
|
||||
}
|
||||
return publicPath;
|
||||
}
|
||||
|
||||
getApiUrl(pathname = '') {
|
||||
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;
|
||||
baseURL = `${protocol}//${host}/`;
|
||||
baseURL = `${protocol}//${host}${baseURL}`;
|
||||
}
|
||||
return baseURL + pathname;
|
||||
return baseURL.replace(/\/$/g, '') + '/' + pathname.replace(/^\//g, '');
|
||||
}
|
||||
|
||||
getRouteUrl(pathname: string) {
|
||||
return this.getPublicPath().replace(/\/$/g, '') + pathname;
|
||||
return this.getPublicPath() + pathname.replace(/^\//g, '');
|
||||
}
|
||||
|
||||
getCollectionManager(dataSource?: string) {
|
||||
|
@ -33,6 +33,47 @@ describe('Application', () => {
|
||||
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', () => {
|
||||
it('default', () => {
|
||||
const app = new Application({});
|
||||
@ -42,14 +83,16 @@ describe('Application', () => {
|
||||
|
||||
it('custom', () => {
|
||||
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');
|
||||
});
|
||||
|
||||
it('custom end with /', () => {
|
||||
const app = new Application({ publicPath: '/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