基于vue3.0和element-plus的组件库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

4.6 KiB

Public API

plugs/api/public.ts - Public endpoints (no authentication required).

Overview

Public API module containing endpoints that do not require authentication. These are typically used for login, logout, menu retrieval, and dictionary lookups.

Endpoints

Key URL Description
dict public/dict Dictionary data
info public/info User info (current)
login public/login Authentication
logout public/logout End session
menu public/menu Navigation menu
actions public/actions/{content} Actions for content

Exports

Function HTTP Description
getByCodes GET Get dictionary entries by codes
getInfo GET Get current user info
login POST Authenticate user
logout PUT End user session
getMenus GET Get navigation menus
getActions GET Get permitted actions for content

Functions

getByCodes

export const getByCodes = (codes) => {
  return new Promise((resolve, reject) => {
    get(urls.dict, codes).then(
      (rsp: any) => {
        if (rsp) {
          resolve(rsp);
        } else {
          resolve(false);
        }
      },
      (err) => {
        resolve(false);
      }
    );
  });
};
  • URL: public/dict
  • Parameters: codes - Array of dictionary codes
  • noMsg: defaults to falsy
  • noLoading: defaults to falsy
  • Returns: Dictionary data or false on error

getInfo

export const getInfo = () => {
  return new Promise((resolve, reject) => {
    get(urls.info, null, true, true).then(
      (rsp: any) => {
        if (rsp) {
          resolve(rsp);
        } else {
          resolve(false);
        }
      },
      (err) => {
        resolve(false);
      }
    );
  });
};
  • URL: public/info
  • noMsg: true - Suppress messages
  • noLoading: true - No loading indicator
  • Returns: User info object or false

login

export const login = (user) => {
  return new Promise((resolve, reject) => {
    post(urls.login, user).then(
      (rsp: any) => {
        resolve(rsp);
      },
      (err) => {
        resolve(false);
      }
    );
  });
};
  • URL: public/login
  • HTTP: POST
  • Parameters: user - Credentials object (e.g., { username, password })
  • Returns: Response or false on error

logout

export const logout = () => {
  return new Promise((resolve, reject) => {
    put(urls.logout).then(
      (rsp: any) => {
        resolve(rsp);
      },
      (err) => {
        resolve(false);
      }
    );
  });
};
  • URL: public/logout
  • HTTP: PUT (unusual - typically DELETE or POST)
  • Returns: Response or false on error

getMenus

export const getMenus = () => {
  return new Promise((resolve, reject) => {
    get(urls.menu, null, true, true).then(
      (rsp: any) => {
        if (rsp) {
          resolve(rsp);
        } else {
          resolve([]);
        }
      },
      (err) => {
        resolve([]);
      }
    );
  });
};
  • URL: public/menu
  • noMsg: true
  • noLoading: true
  • Returns: Menu array or [] on error (different from others that return false)

getActions

export const getActions = (content) => {
  return new Promise((resolve, reject) => {
    get(urls.actions + '/' + content, null, true, true).then(
      (rsp: any) => {
        if (rsp) {
          resolve(rsp);
        } else {
          resolve([]);
        }
      },
      (err) => {
        resolve([]);
      }
    );
  });
};
  • URL: public/actions/{content}
  • Path Parameter: content - Content identifier
  • noMsg: true
  • noLoading: true
  • Returns: Actions array or [] on error

Usage Example

import { pub } from 'plugs/api';

// Login
const user = await pub.login({ username: 'admin', password: 'secret' });

// Get current user info
const info = await pub.getInfo();

// Get menus
const menus = await pub.getMenus();

// Get actions for content
const actions = await pub.getActions('user');

// Get dictionary entries
const dict = await pub.getByCodes(['status', 'type']);

// Logout
await pub.logout();

Anti-Patterns

  1. logout uses PUT - Should typically be DELETE or POST, not PUT
  2. Inconsistent error returns - getMenus/getActions return [], others return false
  3. No reject - All promises resolve, never reject
  4. All custom implementations - None use base module functions despite similar patterns