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
- Host: GitHub
- URL: https://github.com/integritystl/integrityxd-wp-rest-api-client
- Owner: integritystl
- Created: 2024-08-14T17:43:44.000Z (almost 2 years ago)
- Default Branch: dev
- Last Pushed: 2025-01-24T12:55:25.000Z (over 1 year ago)
- Last Synced: 2025-01-30T10:25:29.111Z (over 1 year ago)
- Topics: internal, javascript, rest-api, wordpress
- Language: TypeScript
- Homepage:
- Size: 692 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
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.