Skip to content

RaenonX-PokemonCommon/cms-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cms-client

Disconnected fork of https://github.com/kmariappan/strapi-client-js. JS/TS client for Strapi Rest API.

Installation

yarn add @raenonx-pokemon/cms-client
yarn install

Peer Dependencies

This package uses axios as a http client and qs for parsing and stringifying the Query.

Create Client Options

// Typescript
import {createClient, StrapiClientOptions} from '@raenonx-pokemon/cms-client';

const options: StrapiClientOptions = {
  url: 'http://localhost:1337/api',
  apiToken: '', // Built in API token,
  normalizeData: true, // Normalize Unified response Format. default - true
  headers: {}, // Custom Headers
  persistSession: false, // Persist authenticated token in browser local storage. default -false
};

const strapiClient = createClient(options);

REST API

Get

import {createClient} from '@raenonx-pokemon/cms-client';

const strapiClient = createClient({url: 'http://localhost:1337/api'});

const run = async () => {
  const {data, error, meta} = await strapiClient
    .from('students')
    // .from<Student>("students") ** typescript **
    .select(['firstname', 'lastname']) // Select only specific fields.
    // .select(["firstname", "lastname"]) ** typescript **
    .get();

  if (error) {
    console.log(error);
  } else {
    console.log(data);
    console.log(meta);
  }
};

run();

Retrieve many entries by ids

const {data, error, meta} = await strapiClient.from('students').selectManyByID([200, 240]).get();

Filter Methods

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .equalTo('id', 2)
  .get();
const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .between('id', [40, 45])
  .get();

All filter Methods

equalTo();
notEqualTo();
lessThan();
lessThanOrEqualTo();
greaterThan();
greaterThanOrEqualTo();
containsCaseSensitive();
notContainsCaseSensitive();
contains();
notContains();
isNull();
isNotNull();
between();
startsWith();
endsWith();

Filter Deep

@param path - as string by relation
@param Operator "eq" | "ne" | "lt" | "gt" | "lte" | "gte" | "in" | "notIn" | "contains" | "notContains" | "startsWith" | "endsWith"
@param values can be string, number or array

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .filterDeep('address.city', 'eq', 'Munich')
  .get();

Sort

Expects an array with the field and order example - [{field: 'id', order: 'asc'}]

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .between('id', [40, 45])
  .sortBy([{ field: 'id', order: 'desc' }])
  .get();

Publication State

Returns both draft entries & published entries.

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .withDraft()
  .get();

Returns only draft entries.

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .onlyDraft()
  .get();

Locale

Get entries from a specific locale.

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .setLocale('de')
  .get();

Pagination

To paginate results by page

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .paginate(1, 15)
  .get();

To paginate results by offset

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .paginateByOffset(0, 25)
  .get();

Populate

Populate 1 level for all relations

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .populate()
  .get();

Populate 2 levels

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .populateWith<Address>('address', ['id', 'city'], true)
  .get();

Populate Deep

const {data, error, meta} = await strapiClient
  .from<Student>('students')
  .select(['firstname', 'lastname'])
  .populateDeep([
    {
      path: 'address',
      fields: ['id', 'string'],
      children: [{key: 'country', fields: ['id', 'name']}],
    },
  ])
  .get();

Post

Create single record

const {data, error, meta} = await strapiClient
  .from('students')
  .create({ firstname: 'Vorname', lastname: 'Nachname' });

Create Many records

const {success} = await strapiClient.from('students').createMany([
  {firstname: 'muster', lastname: 'muster'},
  {firstname: 'muster1', lastname: 'muster1'},
]);

Available Post Methods

update();
updateMany();
deleteOne();
deleteMany();

Auth

signup new user

  const {data, error} = await strapiClient.auth.signUp({
    username: 'username',
    email: 'name@gmail.com',
    password: '12345678',
  });

signin user

  const {data, error} = await strapiClient.auth.signIn({    
    email: 'name@gmail.com',
    password: '12345678',
  });

signout user - removes the authentication token if saved in localstorage

  const {error} = await strapiClient.auth.signOut();  

Misc

Get url from the client Object

  const url = strapiClient.getApiUrl();

  console.log(url);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •