@potentii/rest-envelopes

Enveloping of REST messages

Usage no npm install needed!

<script type="module">
  import potentiiRestEnvelopes from 'https://cdn.skypack.dev/@potentii/rest-envelopes';
</script>

README

REST Envelopes

Enveloping of REST messages


Usage

Example in an expressjs application:

import { RequestEnvelope, ResponseEnvelope, ApiError, ApiErrorDetail } from '@potentii/rest-envelopes';

app.post('/api/users', (req, res, next) => {
   const body = RequestEnvelope.from(req.body);
    
   // ...
   
   if(!body.data.fullname) 
      return res
         .status(400)
         .json(ResponseEnvelope.withError(
            ApiError.create('VALIDATION_ERR', 'Registration have failed', ApiErrorDetail.create('USER_ID_INVALID', 'The full name of the user must be set', 'fullname', body.data.fullname))
         ))
         .end();
    
   // Response body:
   // {
   //    error: {
   //       code: 'VALIDATION_ERR',
   //       message: 'Registration have failed',
   //       errors: [
   //          {
   //             code: 'USER_ID_INVALID', 
   //             message: 'The full name of the user must be set', 
   //             field: 'fullname', 
   //             value: null
   //          }
   //       ]
   //    }
   // }
    
   // ...
   
   let createdUser = {
      user_id: 1,
      fullname: 'John Doe'
   };
   
   res
      .status(200)
      .json(ResponseEnvelope.withData(createdUser)) // data can be an object or a list
      .end();

   // Response body:
   // {
   //    data: {
   //       user_id: 1,
   //       fullname: 'John Doe'
   //    }
   //    
   // }
   
    
});


License

MIT