Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including papir with all npm packages installed. Try it out:

var papir = require("papir")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

papir v2.3.5

Rest API Modelling library

papir.js

Model Rest API Controller

Example with WooCommerce & vuejs

@notice - Cors must be accepted for the given url if running in browser

Fetch client_key & client_secret

import { Woo } from 'papir'
let woo = new Woo(
  'http://example.com',
  'AppName'
)
woo.authenticate() // Opens new window & respond with keys in console if accepted

Setup for vue

// In main.js
import { papir, Woo } from 'papir'
let woo = new Woo(
  'http://example.com',
  'AppName',
  'ck_***',
  'cs_***'
)
woo.authorize()
Vue.use(papir, { controller: woo.controller })

Using the module with vue components


// Single instance
let ep = new Endpoint(
  '/wp-json/wc/v2/products{/id}{/batch}',
  this.$glob.woo.controller
)

ep.id = new Prop(ep, 'id')
ep.id.value = 344 // Get product with id 344
ep.fetch().then(() => {
  console.log(ep)
  console.log(ep.raw.data) // Get raw response data
  console.log(ep.name.value)
  console.log(ep.regular_price.value)
  // etc..
  ep.name.value = 'xxx'
  ep.name.save() // Save property
  ep.name.fetch() // Refetch property
  ep.save() // Save all properties
  ep.fetch() // Fetch all properties
  ep.delete()
  ep.loading // Check if model is loading
  ep.clone() // Clone model
})

// Multiple instances
let list = new List(ep)
list
  .query()
  .limit(100)
  .fetch()
  .then(() => {
    console.log('Raw data', list)
    console.log('Raw data', list.raw.data)
    console.log('Children', list.children)
    list.children[0].name.value = 'New name'
    list.children[0].name.save()
    list.save() // Save everything
    list.delete() // Delete all children
    list.fetch() // Delete everything
    list
      .query() // Query by multiple custom key value pairs
      .custom('key', 'value')
      .custom('search', 'term')
      .custom('perPage', '31')
      .limit(42) // Built in filters
      .search()
      .page()
      .offset()
      .order()
      .context('view') // or 'edit'
      .fetch() // fetch ends the query and returns a Promise
    list.loading()
  })

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free