Nothing Pleases Me

    fusion-plugin-http-router

    0.4.1 • Public • Published

    fusion-plugin-http-router

    Register and handle Http routes in a fusion app.


    Table of contents


    Installation

    yarn add fusion-plugin-http-router
    

    Setup

    // src/main.js
    import React from 'react';
    import App from 'fusion-core';
    import HttpRouter, {
      HttpRouterToken,
      HttpHandlersToken,
    } from 'fusion-plugin-http-router';
     
    // Define your http routes and methods server side
    const handlers = __NODE__ && {
      '/api': {
        '/users': {
          POST: async () => {
            const user = createUser();
            return user;
          },
          ':id': {
            GET: async ({params: {id}}, ctx) => {
              return {some: 'data' + id};
            },
            PUT: async ({params: {id}, query, body}, ctx) => {
              updateUser(body);
              return {some: 'data' + id};
            },
            delete: async (args, ctx) => {
              // Error Handling Example
              try {
                deleteUser();
              } catch (e) {
                const error = new Error('Failed to delete user');
                error.code = 'DELETEUSER';
                error.meta = {
                  custom: 'metadata',
                };
                throw error;
              }
            },
          }
        },
     
        '/book': {...}
      },
    };
     
    export default () => {
      const app = new App(<div />);
     
      if (__NODE__) {
        app.register(HttpRouterToken, HttpRouter);
        app.register(HttpHandlersToken, handlers);
      }
     
      return app;
    };

    API

    Registration API

    HttpRouter
    import HttpRouter from 'fusion-plugin-http-router'

    The HttpRouter plugin. Registers http routes and handlers.

    HttpRouterToken
    import { HttpRouterToken } from 'fusion-plugin-http-router'

    The canonical token for the HttpRouter plugin. Typically, it should be registered with the HttpRouter plugin.

    Dependencies

    HttpHandlersToken
    import { HttpHandlersToken } from 'fusion-plugin-http-router'

    Configures what http Router handlers exist. Required. Server-only.

    Types
    type Args = {
      params: Object,
      query: Object,
      body: Object,
      files: Object
    }
     
    type HttpHandlers = {
      [string]: { [string]: (args: Args, ctx: Context) => any },
    }

    You can register a value of type HttpHandlers.

    BodyParserOptionsToken
    import { BodyParserOptionsToken } from 'fusion-plugin-http-router'

    Configures the options for koa-body, internally used for parsing. Optional. Server-only.

    Install

    npm i fusion-plugin-http-router

    DownloadsWeekly Downloads

    7

    Version

    0.4.1

    License

    MIT

    Unpacked Size

    78.8 kB

    Total Files

    25

    Last publish

    Collaborators

    • mrmuhammadali