An open API service indexing awesome lists of open source software.

https://github.com/integritystl/integrityxd-wp-rest-api-client

A low-level npm package for WordPress REST API requests
https://github.com/integritystl/integrityxd-wp-rest-api-client

internal javascript rest-api wordpress

Last synced: 3 months ago
JSON representation

A low-level npm package for WordPress REST API requests

Awesome Lists containing this project

README

          

# @integrityxd/wp-rest-api-client

This package provides a typed, low-level interface for interacting with the WordPress REST API using a functional approach. It uses Axios for making HTTP requests.

## Installation

```bash
npm install @integrityxd/wp-rest-api-client axios
```

## Usage

Import the necessary functions and types:

```typescript
import axios from 'axios';
import { createWordPressAPI } from 'wordpress-rest-api';
```

Create an Axios instance and initialize the API:

```typescript
const axiosInstance = axios.create({
baseURL: 'https://your-wordpress-site.com/wp-json/wp/v2',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_AUTH_TOKEN'
}
});

const wpApi = createWordPressAPI(axiosInstance);
```

Use the API methods:

```typescript
// Fetch all posts
const posts = await wpApi.fetchAllItems('/posts');

// Insert a new post
const newPost = await wpApi.insertItem('/posts', {
title: 'New Post',
content: 'Post content',
status: 'publish'
});

// Update a post
const updatedPost = await wpApi.updateItem(`/posts/${newPost.data.id}`, {
title: 'Updated Post Title'
});

// Delete a post
await wpApi.deleteItem(`/posts/${newPost.data.id}`);
```

## API Methods

- `insertItem(url: string, data: WordPressItem): Promise>`
- `deleteItem(url: string): Promise>`
- `forceDeleteItem(url: string): Promise>`
- `updateItem(url: string, data: WordPressItem): Promise>`
- `updateItemBuffer(url: string, data: Buffer, filename: string): Promise>`
- `fetchAllItems(url: string, extraParams?: Record): Promise`

All methods use the provided Axios instance for making requests.

## Types

```typescript
interface WordPressItem {
[key: string]: unknown;
}
```

## Customizing Axios Instance

You can customize the Axios instance before passing it to `createWordPressAPI`. This allows you to:

- Set custom headers
- Configure request timeouts
- Add request or response interceptors
- Set up custom authentication

Example of a custom Axios instance:

```typescript
const axiosInstance = axios.create({
baseURL: 'https://your-wordpress-site.com/wp-json/wp/v2',
timeout: 10000,
headers: {'X-Custom-Header': 'foobar'}
});

axiosInstance.interceptors.request.use((config) => {
// Modify config before request is sent
return config;
});

const wpApi = createWordPressAPI(axiosInstance);
```

For more detailed documentation on Axios configuration, please refer to the [Axios documentation](https://axios-http.com/docs/config_defaults).

## Development

To set up the development environment:

1. Clone the repository
2. Run `npm install`
3. Run `npm run test` to run the test suite
4. Run `npm run lint` to lint the code

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

This project is licensed under the MIT License.