Features
Docs
CLI
Benchmarks
Examples

© 2024 MoroJs

@morojs/moro


@morojs/moro / response

Variable: response

const response: object

Defined in: src/core/utilities/response-helpers.ts:333

Standardized response helper object for convenient imports

Type Declaration

badRequest()

badRequest: (message) => ApiErrorResponse

Create a bad request error response

Parameters

message

string = 'Invalid request'

Returns

ApiErrorResponse

Example

app.post('/upload', async (req, res) => {
  if (!req.files?.file) {
    return res.status(400).json(
      badRequest('File is required')
    );
  }
  // ... process file
});

conflict()

conflict: (message) => ApiErrorResponse

Create a conflict error response (e.g., duplicate entry)

Parameters

message

string

Returns

ApiErrorResponse

Example

app.post('/users', async (req, res) => {
  const existing = await getUserByEmail(req.body.email);
  if (existing) {
    return res.status(409).json(
      conflict('Email already in use')
    );
  }
  const user = await createUser(req.body);
  return success(user);
});

error()

error: (errorMessage, code?, message?) => ApiErrorResponse

Create a standardized error response

Parameters

errorMessage

string

code?

string

message?

string

Returns

ApiErrorResponse

Example

app.get('/users/:id', async (req, res) => {
  const user = await getUser(req.params.id);
  if (!user) {
    return res.status(404).json(
      error('User not found', 'USER_NOT_FOUND')
    );
  }
  return success(user);
});

forbidden()

forbidden: (message) => ApiErrorResponse

Create a forbidden error response

Parameters

message

string = 'Insufficient permissions'

Returns

ApiErrorResponse

Example

app.delete('/users/:id', async (req, res) => {
  if (!req.user.roles.includes('admin')) {
    return res.status(403).json(forbidden());
  }
  await deleteUser(req.params.id);
  return success({ deleted: true });
});

internalError()

internalError: (message) => ApiErrorResponse

Create an internal server error response

Parameters

message

string = 'Internal server error'

Returns

ApiErrorResponse

Example

app.get('/data', async (req, res) => {
  try {
    const data = await fetchData();
    return success(data);
  } catch (err) {
    return res.status(500).json(
      internalError('Failed to fetch data')
    );
  }
});

notFound()

notFound: (resource) => ApiErrorResponse

Create a not found error response

Parameters

resource

string = 'Resource'

Returns

ApiErrorResponse

Example

app.get('/users/:id', async (req, res) => {
  const user = await getUser(req.params.id);
  if (!user) {
    return res.status(404).json(notFound('User'));
  }
  return success(user);
});

rateLimited()

rateLimited: (retryAfter?) => ApiErrorResponse

Create a rate limit exceeded error response

Parameters

retryAfter?

number

Returns

ApiErrorResponse

Example

app.post('/api/send', async (req, res) => {
  const limited = await checkRateLimit(req.ip);
  if (limited) {
    return res.status(429).json(
      rateLimited(60) // 60 seconds retry
    );
  }
  // ... process request
});

success()

success: <T>(data, message?) => ApiSuccessResponse<T>

Create a standardized success response

Type Parameters

T

T = any

Parameters

data

T

message?

string

Returns

ApiSuccessResponse<T>

Example

app.get('/users', async (req, res) => {
  const users = await getUsers();
  return success(users);
});

// With message
app.post('/users', async (req, res) => {
  const user = await createUser(req.body);
  return success(user, 'User created successfully');
});

unauthorized()

unauthorized: (message) => ApiErrorResponse

Create an unauthorized error response

Parameters

message

string = 'Authentication required'

Returns

ApiErrorResponse

Example

app.get('/admin', async (req, res) => {
  if (!req.user) {
    return res.status(401).json(unauthorized());
  }
  return success(adminData);
});

validationError()

validationError: (details, message?) => ApiErrorResponse

Create a validation error response

Parameters

details

ResponseValidationErrorDetail[]

message?

string

Returns

ApiErrorResponse

Example

app.post('/users', async (req, res) => {
  const validationErrors = validateUser(req.body);
  if (validationErrors.length > 0) {
    return res.status(400).json(
      validationError(validationErrors)
    );
  }
  // ... create user
});

Example

import { response } from '@morojs/moro';

app.get('/users', async (req, res) => {
  const users = await getUsers();
  return response.success(users);
});

app.get('/users/:id', async (req, res) => {
  const user = await getUser(req.params.id);
  if (!user) {
    return res.status(404).json(response.notFound('User'));
  }
  return response.success(user);
});