0.1.2 • Published 8 years ago

@crudlio/crudl-connectors-drf v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 years ago

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
    }
  })
}
0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago