Nationwide Polamorous Matrimony

    @jweb-development/response-parser
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.4 • Public • Published

    Response Parser

    This package comprises a JavaScript library meant for parsing and (optionally) performing actions based on responses received from a RESTful API.

    Installation

    From your terminal, type the following:

    npm i @jweb-development/response-parser

    And from there the package should be ready to go!

    Use Case

    As we handled a growing number of websites that consumed data from REST APIs, we found it burdensome to implement response handling across each codebase. Moreover, we began using Redux for state management across our code; as we received certain statuses (e.g. "Unauthorized") from the API, we found it necessary to immediately dispatch actions to update state for the entire application (e.g. resetting the state and returning the user to a Login component).

    This package hopefully accomplishes both of the above tasks; it is meant to simplify and streamline how responses from APIs are handled on the client side, and can also (optionally) be integrated with state management libraries to perform stateful actions.

    Example Usage

    // import the redux action type
    const { GET_ORG_CONTACTS } = require('../redux/types')
    // import the npm library
    const { parseResponse } = require('@jweb-development/response-parser')
    // sample api call triggered by the ui
    const processInfo = async (
      dispatch = () => { }, apiInfo, fireSuccess = () => { }, fireFailure = () => { }
    ) => {
      try {
        const { accountID, options } = apiInfo
        // make the api call using fetch
        const response = await window.fetch(`${api}/accounts/${accountID}/info`, options)
        // get the details of the call from the response object
        const parsedResponse = parseResponse(response)
        // check for errors; if there are none then get the data
        if (parsedResponse && !parsedResponse.error) {
          const { data = {} } = await response.json()
    
          const { apiInfo = {} } = data
    
          dispatch({ type: GET_ORG_CONTACTS, payload: apiInfo })
    
          return true
        } else {
          // here, we know the library/status code is an error code, so we fire an error handler
          fireFailure()
          return false
        }
      } catch (err) {
        console.error(err)
        fireFailure()
        return false
      }
    }

    Running Locally

    To run the package locally, pull from source and run npm run build to output the package into a dist folder. From there, run npm i path-to-local-repo to target the package and install it. Make sure to uninstall the response-parser library first if it has already been downloaded from npm.

    Contributing

    This package contains the response codes that we use/see the most, but it is by no means exhaustive. While we hope to make this library more robust in the future, we welcome pull requests that amplify what we've written. Before making a PR, consider writing a unit test in the test folder to ensure the code works as expected.

    Install

    npm i @jweb-development/response-parser

    DownloadsWeekly Downloads

    6

    Version

    1.1.4

    License

    MIT

    Unpacked Size

    12.7 kB

    Total Files

    11

    Last publish

    Collaborators

    • sekcj
    • jjchambl