@netuno/service-client

1.2.0 • Public • Published

service-client

npm version

Client to integrations with Netuno Services.

More about the Netuno Platform.

Install

npm i -S @netuno/service-client

Import

import _service from '@netuno/service-client';

Config

Define the prefix to be used with all URLs:

_service.config({
    prefix: 'http://localhost:9000/services/'
});

Any setting passed to service call can be configured globally.

Default config parameters:

{
    prefix: '',
    url: '',
    method: 'GET',
    credentials: 'include',
    headers: {
        'Content-Type': 'application/json',
        'Accept':  'application/json'
    },
    success: (data) => { },
    fail: (data) => {}
}

Usage

In the global configuration (_service.config({...})) or with the object passed to the service function (_service({...})), you can set or override any fetch parameters, like mode, credentials, headers, etc.

The data is automatically converted to the body content.

GET Text or JSON
  _service({
      url: "/services/my-get-service",
      data: { param1: "1", param2: "2" },
      success: (response) => {
          if (response.text) {
              console.log("Service Response", response.text);
          }
          if (response.json) {
              console.log("Service Response", response.json);
          }
      },
      fail: (e) => {
          console.log("Service Error", e);
      }
  });
Simple JSON POST

By default is submitted as JSON:

  _service({
      url: "/services/my-post-service",
      method: 'POST',
      data: { param1: "1", param2: "2" },
      success: (response) => {
          if (response.json) {
              console.log("Service Response", response.json);
          }
      },
      fail: (e) => {
          console.log("Service Error", e);
      }
  });
Form Upload

Load the FormData with the file field and send it:

const formData = new FormData();
formData.append('file', input.files[0]);
formData.append('otherField', 'value...');
_service({
    method: "POST",
    url: "/",
    data: formData,
    success: (response) => {
        setResponse(response.text);
    },
    fail: (e) => {
        console.log("Reponse Error", e);
    }
});

Load the FormData object from a ReactJS form reference:

_service({
    method: "POST",
    url: "/",
    data: new FormData(formUpload.current),
    success: (response) => {
        setResponse(response.text);
    },
    fail: (e) => {
        console.log("Reponse Error", e);
    }
});
POST JSON with ReactJS and Ant.Design:

Imports:

import { notification } from 'antd';
import _service from '@netuno/service-client';

Save event will send the values object as JSON:

handleSave(values) {
    this.setState({ loading: true });
    const fail = () => {
        this.setState({ loading: false });
        notification["error"]({
            message: 'Error',
            description: 'Your data could not be saved.',
            style: {
                marginTop: 100
            }
        });
    };
    _service({
        url: '/services/my-post-service',
        method: 'POST',
        data: values,
        success: (response) => {
            if (response.json.result === true) {
                notification["success"]({
                    message: 'Success',
                    description: 'Your data has been saved.',
                    style: {
                        marginTop: 100
                    }
                });
                this.setState({
                    loading: false
                });
            } else {
                fail();
            }
        },
        fail: (e) => {
            console.log("Service failed.", e);
            fail();
        }
    });
}
BLOB

Download file:

  _service({
      url: "/services/my-downloadable-service",
      method: 'POST',
      data: { param1: "1", param2: "2" },
      blob: true,
      success: (response) => {
          const { blob } = response;
          if (blob) {
              const file = window.URL.createObjectURL(blob);
              window.location.assign(file);
          }
      },
      fail: (e) => {
          console.log("Service Error", e);
      }
  });

To download file with a custom name you can use the module DownloadJS:

npm install -S downloadjs

Then the sample code:

import _service from '@netuno/service-client';
import download from 'downloadjs';

...

  _service({
      url: "/services/my-downloadable-service",
      blob: true,
      success: (response) => {
          const { blob } = response;
          if (blob) {
              // Excel XLS
              download(blob, "my-excel.xls", "application/vnd.ms-excel");
              // PDF
              download(blob, "my-pdf.pdf", "application/pdf");
          }
      },
      fail: (e) => {
          console.log("Service Error", e);
      }
  });

...

Package Sidebar

Install

npm i @netuno/service-client

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

34.5 kB

Total Files

6

Last publish

Collaborators

  • sitana
  • eduveks