Skip to content
This repository was archived by the owner on Feb 28, 2018. It is now read-only.

simpleloop/crudl-connectors-drf

Repository files navigation

Django Rest Framework connectors for crudl

Installation

$npm install --save @crudlio/crudl-connectors-drf

Usage examples

Simple endpoint connector

import { createDRFConnector } from '@crudlio/crudl-connectors-drf'
const blogEntries = createDRFConnector('localhost:8080/api/v1/entries')

blogEntries.read().then((entries) => {
  // Do something with the entries
})

Parametrized endpoint connector

import { createDRFConnector } from '@crudlio/crudl-connectors-drf'
const user = createDRFConnector('localhost:8080/api/v1/users/:username/')

const john = user('john')
const jane = user('jane')

jane.update({ data: { email: 'jane@crudl.io' }})
john.delete()

Setting defaults

import { createDRFConnector, defaults } from '@crudlio/crudl-connectors-drf'

// Set the default baseURL
defaults.baseURL = 'localhost:8080/api/v1'

const blogEntries = createDRFConnector('entries')
const blogEntry =  createDRFConnector('entries/:id/')

Using pagination

import { createDRFConnector } from '@crudlio/crudl-connectors-drf'
import { numberedPagination } from '@crudlio/crudl-connectors-drf/lib/middleware'

const tags = createDRFConnector('localhost:8080/api/v1/tags/').use(numberedPagination())

tags.read().then(results => {
  console.log(results.length) // 20
  console.log(results.pagination) // { type: 'numbered', allPages: [1, 2, 3], currentPage: 1 }
})

tags.read({ page: 2 }).then(results => {
  console.log(results.length) // 20
  console.log(results.pagination) // { type: 'numbered', allPages: [1, 2, 3], currentPage: 2 }
})

Handling Errors

Suppose handleSubmit is a redux-form submit handler of a create user form.

import { SubmissionError } from 'redux-form'
import { createDRFConnector } from '@crudlio/crudl-connectors-drf'

const users = createDRFConnector('localhost:8080/api/v1/users/')

function handleSubmit(data) {
  return users.create({ data })
  .catch((error) => {
    if (error.validationError) {
      throw new SubmissionError(error.errors)
    }
    if (error.authorizationError) {
      // Redirect to login
    }
    if (error.permissionError) {
      // Display warning
    }
  })
}

About

Django Rest Framework CRUDL connector

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •