# plover-router

> 为Plover应用提供Restful形式API。

Latest version **3.3.1** (published 2018-01-19) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install plover-router
pnpm add plover-router
yarn add plover-router
bun add plover-router
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.3.1 |
| Published | 2018-01-19 |
| First published | 2016-10-06 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 253 |
| Author | bencode@163.com |
| Maintainers | bencode |

## Links

- npm: https://www.npmjs.com/package/plover-router
- Repository: https://github.com/alibaba/plover
- Homepage: https://github.com/alibaba/plover#readme
- Issues: https://github.com/alibaba/plover/issues
- npm.io page: https://npm.io/package/plover-router

## Dependencies (1)

- [inflection](https://npm.io/package/inflection.md) ^1.12.0

## Recent versions

- 3.3.1 (latest) — 2018-01-19
- 3.3.0 — 2017-11-05
- 3.2.0 — 2017-07-30
- 3.1.0 — 2017-06-29
- 3.0.0 — 2017-03-30
- 3.0.0-beta.1 — 2017-03-28
- 1.4.0 — 2017-01-27
- 1.3.0 — 2017-01-25
- 1.2.0 — 2017-01-13
- 1.1.1 — 2016-11-20
- 1.1.0 — 2016-10-30
- 1.0.2 — 2016-10-12
- 1.0.0 — 2016-10-06

## README

# plover-router


[![NPM version][npm-image]][npm-url]


为Plover应用提供Restful形式API。


## 使用


在`config/routes.js`配置路由规则。


```js
module.exports = ({ resources, get, post, use }) => {

  get('/', 'home#index');

  get('/patients/:id', 'patients#show');

  post('/products', 'products#create');

  resources('photos');

  use('/admin', require('../lib/middleware/admin'));
};
```

### resources

```js
resources('photos');
```

按约定会生成以下7个路由规则：


| HTTP Verb | Path             | Module#Action  | Used For                                         |
|:----------|:-----------------|:---------------|:-------------------------------------------------|
| GET       | /photos          | photos#index   | display a list of all photos                     |
| GET       | /photos/new      | photos#new     | return an HTML form for creating a new photo     |
| POST      | /photos          | photos#create  | create a new photo                               |
| GET       | /photos/:id      | photos#show    | display a specific photo                         |
| GET       | /photos/:id/edit | photos#edit    | return an HTML form for editing a photo          |
| PATCH/PUT | /photos/:id      | photos#update  | update a specific photo                          |
| DELETE    | /photos/:id      | photos#delete  | delete a specific photo                          |


### 指定需要的action：


```js
resources('photos', { only: ['index', 'new', 'create'] })
```

### 显示配置路由

```
get('/profile', { module: 'users', action: 'show' })
```


### namespace

```js
namespace('admin', () => {
  resources('articles');
});
```

### Nested Resources

```js
resources('magazines', () => {
  resources('ads');
});
```

会生成如下路由规则：


```
GET      /magazines/1/ads
GET      /magazines/1/ads/new
POST     /magazines/1/ads
GET      /magazines/1/ads/2
GET      /magazines/1/ads/2/edit
PATH/PUT /magazines/1/ads/2
DELETE   /magazines/1/ads/2
```

### API

```js
{
  get(match, to);
  post(match, to);
  put(match, to);
  patch(match, to);
  delete(match, to);

  resource(name, { only }, [block]);
  namespace(name, block);

  use(match, middleware);
}
```

#### match

使用[path-to-regexp](https://github.com/pillarjs/path-to-regexp)解析。


### to

有两种格式指定action

```js
get('/profile', 'users#edit');
```

```js
get('/profile', { module: 'users', action: 'edit' });
```

第二种还可以指定更多参数:

```js
get(match, { module: {String}, action: {String}, query: {Object} });
```

[npm-image]: https://img.shields.io/npm/v/plover-router.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/plover-router

---
_Source: https://npm.io/package/plover-router · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
