mirror of
https://github.com/zuiidea/antd-admin.git
synced 2024-04-21 12:32:14 +00:00
86 lines
2.0 KiB
Markdown
86 lines
2.0 KiB
Markdown
# API configuration
|
||
|
||
## Why
|
||
|
||
In the use of `redux` or `dva` projects, we often write functions like the following `service` layer to make the code structure clearer, but it is easy to see that we will write a lot of similar code in `antd -admin@5.0`, using the more concise configuration method to achieve the same function.
|
||
|
||
```javascript
|
||
Export async function login(data) {
|
||
Return request({
|
||
Url: '/api/v1/user/login',
|
||
Method: 'post',
|
||
Data,
|
||
})
|
||
}
|
||
```
|
||
|
||
## Configuration and use
|
||
|
||
In the `src/services/api.js` file, you will see the following configuration object, the object's key is used to call the function name, the object's value is the requested `url`, the default request method is `GET`, The format of the value of the other request mode object is `'method url'`.
|
||
|
||
```javascript
|
||
Export default {
|
||
...
|
||
queryUser: '/user/:id',
|
||
queryUserList: '/users',
|
||
updateUser: 'Patch /user/:id',
|
||
createUser: 'POST /user/:id',
|
||
removeUser: 'DELETE /user/:id',
|
||
removeUserList: 'POST /users/delete',
|
||
...
|
||
}
|
||
```
|
||
|
||
Used in other files
|
||
|
||
```javascript
|
||
Import { queryUser } from 'api'
|
||
|
||
// in the general file
|
||
...
|
||
queryUser(option).then(data => console.log(data))
|
||
...
|
||
|
||
/ / Model file
|
||
...
|
||
Yield call(queryUser, option)
|
||
...
|
||
```
|
||
|
||
## Method to realize
|
||
|
||
Refer to the `src/services/index.js` file to traverse the api configuration. Each property returns the corresponding encapsulated request function.
|
||
|
||
```javascript
|
||
Import request from 'utils/request'
|
||
Import { apiPrefix } from 'utils/config'
|
||
|
||
Import api from './api'
|
||
|
||
Const gen = params => {
|
||
Let url = apiPrefix + params
|
||
Let method = 'GET'
|
||
|
||
Const paramsArray = params.split(' ')
|
||
If (paramsArray.length === 2) {
|
||
Method = paramsArray[0]
|
||
Url = apiPrefix + paramsArray[1]
|
||
}
|
||
|
||
Return function(data) {
|
||
Return request({
|
||
Url,
|
||
Data,
|
||
Method,
|
||
})
|
||
}
|
||
}
|
||
|
||
Const APIFunction = {}
|
||
For (const key in api) {
|
||
APIFunction[key] = gen(api[key])
|
||
}
|
||
|
||
Module.exports = APIFunction
|
||
|
||
``` |