ngx-drupal8-rest
Version:
> A wrapper library to connect to a Drupal8+ based backend
266 lines (192 loc) • 5.88 kB
Markdown
# ngx-drupal8-rest
> A wrapper library to connect to a Drupal8+ based backend
[](https://badge.fury.io/js/ngx-drupal8-rest)
[](https://github.com/prettier/prettier)
## Prerequisites
This project requires NodeJS (version 8 or later) and NPM.
[Node](http://nodejs.org/) and [NPM](https://npmjs.org/) are really easy to install.
To make sure you have them available on your machine,
try running the following command.
```sh
$ npm -v && node -v
6.14.17
v16.17.1
```
## Table of contents
- [Project Name]
- [Prerequisites](#prerequisites)
- [Table of contents](#table-of-contents)
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Usage](#usage)
- [Serving the app]
- [Running the tests]
- [Building a distribution version](#building-a-distribution-version)
- [Serving the distribution version]
<!-- - [API](#api)
- [useBasicFetch](#usebasicfetch)
- [Options](#options)
- [fetchData](#fetchdata) -->
- [Contributing](#contributing)
- [Credits](#credits)
- [Built With](#built-with)
- [Versioning](#versioning)
- [License](#license)
## Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
## Installation
### For integrating on your project
```sh
npm i ngx-drupal8-rest
```
**BEFORE YOU INSTALL:** please read the [prerequisites](#prerequisites)
### For contribuiting to the project
Start with cloning this repo on your local machine:
```sh
git clone https://github.com/wnabil/ngx-drupal8-rest
cd ngx-drupal8-rest
```
To set up the library:
```sh
npm install
```
Or if you prefer using Yarn:
```sh
yarn install
```
## Usage
### Serving the library
```sh
npm run watch:dev
cd dist/ngx-drupal8-rest
npm link
```
### Using the library on your application
go to the main folder of your application and type this command
```sh
npm link ngx-drupal8-rest
```
### Building a distribution version
```sh
npm run publish
```
This task will create a distribution version of the project
inside your local `dist/` folder and will publish on npm
<!-- ## API
### useBasicFetch
```js
useBasicFetch(url: string = '', delay: number = 0)
```
Supported options and result fields for the `useBasicFetch` hook are listed below.
#### Options
`url`
| Type | Default value |
| --- | --- |
| string | '' |
If present, the request will be performed as soon as the component is mounted
Example:
```tsx
const MyComponent: React.FC = () => {
const { data, error, loading } = useBasicFetch('https://api.icndb.com/jokes/random');
if (error) {
return <p>Error</p>;
}
if (loading) {
return <p>Loading...</p>;
}
return (
<div className="App">
<h2>Chuck Norris Joke of the day</h2>
{data && data.value && <p>{data.value.joke}</p>}
</div>
);
};
```
`delay`
| Type | Default value | Description |
| --- | --- | --- |
| number | 0 | Time in milliseconds |
If present, the request will be delayed by the given amount of time
Example:
```tsx
type Joke = {
value: {
id: number;
joke: string;
};
};
const MyComponent: React.FC = () => {
const { data, error, loading } = useBasicFetch<Joke>('https://api.icndb.com/jokes/random', 2000);
if (error) {
return <p>Error</p>;
}
if (loading) {
return <p>Loading...</p>;
}
return (
<div className="App">
<h2>Chuck Norris Joke of the day</h2>
{data && data.value && <p>{data.value.joke}</p>}
</div>
);
};
```
### fetchData
```js
fetchData(url: string)
```
Perform an asynchronous http request against a given url
```tsx
type Joke = {
value: {
id: number;
joke: string;
};
};
const ChuckNorrisJokes: React.FC = () => {
const { data, fetchData, error, loading } = useBasicFetch<Joke>();
const [jokeId, setJokeId] = useState(1);
useEffect(() => {
fetchData(`https://api.icndb.com/jokes/${jokeId}`);
}, [jokeId, fetchData]);
const handleNext = () => setJokeId(jokeId + 1);
if (error) {
return <p>Error</p>;
}
const jokeData = data && data.value;
return (
<div className="Comments">
{loading && <p>Loading...</p>}
{!loading && jokeData && (
<div>
<p>Joke ID: {jokeData.id}</p>
<p>{jokeData.joke}</p>
</div>
)}
{!loading && jokeData && !jokeData.joke && <p>{jokeData}</p>}
<button disabled={loading} onClick={handleNext}>
Next Joke
</button>
</div>
);
};
``` -->
## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Add your changes: `git add .`
4. Commit your changes: `git commit -am 'Add some feature'`
5. Push to the branch: `git push origin my-new-feature`
6. Submit a pull request :sunglasses:
## Credits
Thanks to @makiwin for the big help and support
## Built With
- VsCode
- npm
- Love :heart:
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags).
See also the list of [contributors](https://github.com/wnabil/ngx-drupal8-rest/graphs/contributors) who participated in this project.
## License
[MIT License](https://mit-license.org/2019)