Skip to content

Yasser-G/Sylius-Shop-API-Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sylius Shop API Client

npm npm npm

Implement Sylius Shop API Client into your app in just One Step!

  • Easy to configure API client for quick use
  • All API Plugin endpoints are supported!
  • Very simple way to add custom endpoints.
  • Well-Organized and scalable project.
  • All query params, paths and bodies are documented within the code using jsDoc.

Instalation

npm i sylius-shop-api-client - OR - yarn add sylius-shop-api-client

Usage

API_Client

import { API_Client } from "sylius-shop-api-client"

// Configuration

// Initialize API BaseURL ( Required ) Don't forget trailing /
API_Client.baseURL = "https://my.web.site/api/"


// Set / Clear API Cart Identifier (token), used in all cart requests.

// After Picking Cart => Set token
API_Client.cartToken = "xxxxxxxxxxxxxxx"

// After Dropping Cart => Clear token
API_Client.cartToken = ""


// Set API Locale
API_Client.locale = "en_US"


// Set API default pagination limit
API_Client.limit = "10"


// Set API Default Headers ( Optional ), below values are already defaults.
const myDefaultHeaders = {
  "Accept": "application/json",
  "Content-Type": "application/json",
}
API_Client.defaultHeaders = myDefaultHeaders



// Append New Header (name, value) pair, Any where in your code,
API_Client.appendHeader("Authorization", "Bearer xxxxx")

// Remove header from default headers, Any where in your code,
API_Client.removeHeader("Authorization")


// Set onResponseStatus handler,
// to invoke your custom functions in certain response status codes
API_Client.onResponseStatus = (status) => {

  switch(status){

    case 403:
      // Do something, etc Clear UserData, Remove Auth Headers
      break

    case 500:
      // Do something else
      break

    default:
      // Unhandled cases
      console.log("Unhandled case for status ", status)

  }
}

ShopAPI

import { ShopAPI } from "sylius-shop-api-client"


// Async / Await approach
async loadTaxons() {
  
  try {

    const taxons = await ShopAPI.taxons.show_tree()

    // then use taxon constant

  } catch (error) {

    // handle errors

  }

}

// Callbacks approach
ShopAPI.taxons.show_tree().then((response) => {

// handle response

}).catch((error) => {

  // handle errors

})

Cart ShopAPI.cart

Method Status
ShopAPI.cart.pick
ShopAPI.cart.show
ShopAPI.cart.drop
ShopAPI.cart.add
ShopAPI.cart.add_multiple
ShopAPI.cart.change_quantitiy
ShopAPI.cart.remove_item
ShopAPI.cart.shipping_cost
ShopAPI.cart.add_coupon
ShopAPI.cart.remove_coupon

Products ShopAPI.products

Method Status
ShopAPI.products.by_slug
ShopAPI.products.by_code
ShopAPI.products.by_taxon_slug
ShopAPI.products.by_taxon_code
ShopAPI.products.reviews_by_slug
ShopAPI.products.reviews_by_code
ShopAPI.products.add_review_by_slug
ShopAPI.products.add_review_by_code
ShopAPI.products.latest

Taxons ShopAPI.taxon

Method Status
ShopAPI.taxons.show_tree
ShopAPI.taxons.show_subtree

Checkout ShopAPI.checkout

Method Status
ShopAPI.checkout.summary
ShopAPI.checkout.address
ShopAPI.checkout.get_shipping_methods
ShopAPI.checkout.set_shipping_method
ShopAPI.checkout.get_payment_methods
ShopAPI.checkout.set_payment_method
ShopAPI.checkout.complete

Orders ShopAPI.orders

Method Status
ShopAPI.orders.list_orders
ShopAPI.orders.order_details

User ShopAPI.user

Method Status
ShopAPI.user.request_reset_password
ShopAPI.user.password_reset
ShopAPI.user.register
ShopAPI.user.login
ShopAPI.user.verify_account
ShopAPI.user.me
ShopAPI.user.update_me
ShopAPI.user.change_password

Addresses ShopAPI.addresses

Method Status
ShopAPI.addresses.list
ShopAPI.addresses.create
ShopAPI.addresses.update
ShopAPI.addresses.delete
ShopAPI.addresses.set_default

Custom Endpoint Extending

import { ShopAPI, API_Client } from "sylius-shop-api-client"

const MyShopAPI = {

  // Spread defaults endpoints
  ...ShopAPI,


  // Create your own enpoints using API_client.

  // Get Method, without query params
  myEndpoint: () => API_Client.get("endpoint"),

  // Get Method, query params object (will be converted to string)
  myEndpointCallMethod: (params) => API_Client.get("endpoint", params),

  // Get Method, with changable path and params
  myEndpointPathMethod: (path, params) => API_Client.get(`endpoint/${path}`, params),

  // Post Method, body object (will be stringified inside)
  myEndpointPostMethod: (body) => API_Client.post("endpoint", body),

  // And so on, for put, patch and delete 
  
  

}

// Then use it anywhere in your code,

// Async / Await approach
async loadMyData() {
  
  try {

    const data = await MyShopAPI.myEndpoint()

    // then use data constant

  } catch (error) {

    // handle errors

  }

}

// Callbacks approach
MyShopAPI.myEndpoint().then((response) => {

// handle response

}).catch((error) => {

  // handle errors

})

About

Sylius Shop API JS Client

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published