Skip to content

Commit 2994340

Browse files
committed
Add examples documentation
1 parent e41c67e commit 2994340

File tree

7 files changed

+154
-23
lines changed

7 files changed

+154
-23
lines changed

docs/README.md

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,7 @@
22

33
Simple [axios](https://github.com/axios/axios) HTTP middleware service to simplify hooking to HTTP requests made through Axios.
44

5-
## Installation
6-
7-
```
8-
npm install --save axios-middleware
9-
```
10-
11-
## Getting started
5+
## What's this?
126

137
There are two classes exposed in this module:
148

@@ -17,30 +11,21 @@ There are two classes exposed in this module:
1711

1812
It works with either the global axios or a local instance.
1913

20-
### Create your middleware
14+
## Creating your middleware
2115

2216
Here's a simple example of a locale middleware who sets a language header on each AJAX request.
2317

2418
```javascript
2519
import { HttpMiddleware } from 'axios-middleware';
2620

27-
export default class LocaleMiddleware extends HttpMiddleware {
28-
constructor(i18n) {
29-
super();
30-
this.i18n = i18n;
31-
}
32-
33-
onRequest(config) {
34-
config.headers = {
35-
locale: this.i18n.lang,
36-
...config.headers
37-
};
38-
return config;
21+
export default class ErrorMiddleware extends HttpMiddleware {
22+
handleResponseError(error) {
23+
console.log("Handling:", error);
3924
}
4025
}
4126
```
4227

43-
### Use the middleware service
28+
## Using the service
4429

4530
Simplest use-case:
4631

docs/_navbar.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- [Github](https://github.com/emileber/axios-middleware)
2+
- [npm](https://www.npmjs.com/package/axios-middleware)

docs/_sidebar.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
- Introduction
2+
- [Getting started]()
3+
- [Installation](installation.md)
4+
- [Examples](examples.md)
5+
6+
- Ecosystem
7+
- [Github](https://github.com/emileber/axios-middleware)
8+
- [npm](https://www.npmjs.com/package/axios-middleware)

docs/example.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/examples.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# Examples
2+
3+
All examples are written using ES6 syntax but you can definitely use this plugin with ES5 code.
4+
5+
## Locale middleware
6+
7+
Here's a simple example of a locale middleware who sets a language header on each AJAX request.
8+
9+
```javascript
10+
import { HttpMiddleware } from 'axios-middleware';
11+
12+
export default class LocaleMiddleware extends HttpMiddleware {
13+
constructor(i18n) {
14+
super();
15+
this.i18n = i18n;
16+
}
17+
18+
onRequest(config) {
19+
config.headers = {
20+
locale: this.i18n.lang,
21+
...config.headers
22+
};
23+
return config;
24+
}
25+
}
26+
```
27+
28+
## Exposing the service instance
29+
30+
```javascript
31+
import axios from 'axios';
32+
import { HttpMiddlewareService } from 'axios-middleware';
33+
import i18n from './i18n';
34+
import { LocaleMiddleware, OtherMiddleware } from './middlewares';
35+
36+
// Create a new service instance
37+
const service = new HttpMiddlewareService(axios);
38+
39+
// Then register your middleware instances.
40+
service.register([
41+
new LocaleMiddleware(i18n),
42+
new OtherMiddleware()
43+
]);
44+
45+
export default service;
46+
```
47+
48+
## Usage with ES5 in Node
49+
50+
Create a custom middleware to register.
51+
52+
```javascript
53+
var HttpMiddleware = require('axios-middleware').HttpMiddleware;
54+
55+
function MyMiddleware() {
56+
// call the parent constructor
57+
HttpMiddleware.apply(this, arguments);
58+
}
59+
60+
var proto = MyMiddleware.prototype = Object.create(HttpMiddleware.prototype);
61+
62+
proto.constructor = MyMiddleware;
63+
proto.onRequest = function(config) {
64+
// handle the request
65+
};
66+
67+
module.exports = MyMiddleware;
68+
```
69+
70+
Then export the service.
71+
72+
```javascript
73+
var axios = require('axios'),
74+
HttpMiddlewareService = require('axios-middleware').HttpMiddlewareService,
75+
MyMiddleware = require('./MyMiddleware');
76+
77+
// Create a new service instance
78+
var service = new HttpMiddlewareService(axios);
79+
80+
// Then register your middleware instances.
81+
service.register(new MyMiddleware());
82+
83+
module.exports = service;
84+
```
85+
86+
## Usage in the browser
87+
88+
```html
89+
<script>
90+
var MyHttpService = (function(HttpMiddleware, HttpMiddlewareService) {
91+
function MyMiddleware() {
92+
// call the parent constructor
93+
HttpMiddleware.apply(this, arguments);
94+
}
95+
96+
var proto = MyMiddleware.prototype = Object.create(HttpMiddleware.prototype);
97+
98+
proto.constructor = MyMiddleware;
99+
proto.onRequest = function(config) {
100+
// handle the request
101+
};
102+
103+
// Create a new service instance
104+
var service = new HttpMiddlewareService(axios);
105+
106+
// Then register your middleware instances.
107+
service.register(new MyMiddleware());
108+
109+
return service;
110+
})(AxiosMiddleware.HttpMiddleware, AxiosMiddleware.HttpMiddlewareService);
111+
</script>
112+
```

docs/index.html

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4+
<title>Axios middleware documentation</title>
5+
<meta name="keywords" content="http,middleware,axios,node,javascript,plugin,ajax">
6+
<meta name="description" content="Simple axios HTTP middleware service.">
47
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
58
<meta name="viewport" content="width=device-width,initial-scale=1">
69
<meta charset="UTF-8">
@@ -14,7 +17,12 @@
1417
'.*?/contributing': 'https://raw.githubusercontent.com/emileber/axios-middleware/master/CONTRIBUTING.md',
1518
'/.*/_navbar.md': '/_navbar.md',
1619
},
17-
name: 'Axios Middleware',
20+
name: 'Axios HTTP Middleware',
21+
loadNavbar: true,
22+
loadSidebar: true,
23+
maxLevel: 4,
24+
subMaxLevel: 2,
25+
auto2top: true,
1826
search: {
1927
noData: {
2028
'/fr-ca/': 'Aucun résultat.',
@@ -29,5 +37,6 @@
2937
};
3038
</script>
3139
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
40+
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
3241
</body>
3342
</html>

docs/installation.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Installation
2+
3+
## Using npm
4+
5+
```
6+
npm install --save axios-middleware
7+
```
8+
9+
## Using a CDN
10+
11+
Since Axios can be used in the browser directly, this plugin can also be dropped on a webpage and used as-is.
12+
13+
```html
14+
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
15+
<script src="https://unpkg.com/axios-middleware/dist/axios-middleware.min.js"></script>
16+
```

0 commit comments

Comments
 (0)