Skip to main content

Define Resources

Resources are a collection of methods for a given data model.

Entities and Schemas declaratively define the data model. Endpoints are the methods on that data.

npm install --save @data-client/rest

Codegen GPT Codegen  Github Copilot Instructions

resource() constructs a namespace of RestEndpoints

TodoResource
import { Entity, resource } from '@data-client/rest';  export class Todo extends Entity {  id = 0;  userId = 0;  title = '';  completed = false;   static key = 'Todo'; }  export const TodoResource = resource({  urlPrefix: 'https://jsonplaceholder.typicode.com',  path: '/todos/:id',  schema: Todo,  searchParams: {} as { userId?: string | number } | undefined,  paginationField: 'page', });  /** Methods can be called as functions or used in hooks */  // GET https://jsonplaceholder.typicode.com/todos/5 TodoResource.get({ id: 5 }); // GET https://jsonplaceholder.typicode.com/todos TodoResource.getList(); // GET https://jsonplaceholder.typicode.com/todos?userId=1 TodoResource.getList({ userId: 1 }); // POST https://jsonplaceholder.typicode.com/todos TodoResource.getList.push({ title: 'my todo' }); // POST https://jsonplaceholder.typicode.com/todos?userId=1 TodoResource.getList.push({ userId: 1 }, { title: 'my todo' }); // GET https://jsonplaceholder.typicode.com/todos?userId=1&page=2 TodoResource.getList.getPage({ userId: 1, page: 2 }); // PUT https://jsonplaceholder.typicode.com/todos/5 TodoResource.update({ id: 5 }, { title: 'my todo' }); // PATCH https://jsonplaceholder.typicode.com/todos/5 TodoResource.partialUpdate({ id: 5 }, { title: 'my todo' }); // DELETE https://jsonplaceholder.typicode.com/todos/5 TodoResource.delete({ id: 5 }); 

To aid in defining Resources, composable and extensible protocol specific helpers are provided for REST, GraphQL, Image/binary, Websockets+SSE.

To use existing API definitions, or define your own protocol specific helpers, use Endpoint and EntityMixin from @data-client/endpoint. [See Async/Promise tab above]