https://github.com/netsells/laravel-api-parser
Parse Laravel REST API responses
https://github.com/netsells/laravel-api-parser
Last synced: about 1 month ago
JSON representation
Parse Laravel REST API responses
- Host: GitHub
- URL: https://github.com/netsells/laravel-api-parser
- Owner: netsells
- Created: 2019-04-10T08:40:44.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-05-07T09:31:53.000Z (about 4 years ago)
- Last Synced: 2025-02-02T18:52:07.853Z (3 months ago)
- Language: JavaScript
- Size: 126 KB
- Stars: 1
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://badge.fury.io/js/%40netsells%2Flaravel-api-parser)
[](https://travis-ci.com/netsells/laravel-api-parser)
[](https://codecov.io/gh/netsells/laravel-api-parser)
[](https://stryker-mutator.github.io)# Laravel API Parser
Parse responses from Laravel API REST endpoints and extract meaningful errors
related to your form fields## Installation
```
yarn add @netsells/laravel-api-parser
```## Usage
Note: it currently only works with `axios` response objects or any object with
the same duck type.Import the `ResponseParser` class and instantiate it, passing in any custom
options you would like to use```javascript
import ResponseParser from '@netsells/laravel-api-parser';const responseParser = new ResponseParser();
const response = await axios.post('/foo/bar', data);
const errors = responseParser.getErrors(response);
```The `getErrors` returns an object containing the errors for the fields passed
in. It may also return an object with a key of `null` representing a generic
error for the entire response, rather than a single field.For a 422 error it may return:
```javascript
{
email: 'You must enter a valid email'
}
```For a 500 error it will return:
```javascript
{
[null]: 'Something went wrong, sorry about that'
}
```## Customisation
### Config
When instantiating the class, you can pass in an object with the following keys
to override certain behaviour#### fallbackErrorMessage
The error message used as the last resort, when no other errors could be parsed.
```javascript
new ResponseParser({
fallbackErrorMessage: 'Woops, something went wrong! Please try again later',
});
```### Overrides
You can override the ResponseParser class to change the functionality of it.
When parsing errors, `getErrors` will look for a function based on the status of
the response, e.g. `getErrorsFor404` for a `404` status. If this doesn't exist,
it will fallback to a function for the range of the status, in this case
`getErrorsFor4XX`. Finally if that doesn't exist, it will return the fallback
error message.So if you wanted to added custom errors for 404 responses, you could do this:
```javascript
import ResponseParser from '@netsells/laravel-api-parser';class MyResponseParser extends ResponseParser {
getErrorsFor404() {
return {
[null]: 'Not found!',
};
}
}const responseParser = new MyResponseParser();
const response = await axios.get('/my-model/12'); // doesn't exist
const errors = responseParser.getErrors(response); // { [null]: 'Not found!' }
```## Contributing
Pull requests are welcome! Ensure each PR includes a test case (which would fail
without your changes) and that your build passes.It is created and maintained by the [Netsells team](https://netsells.co.uk/)