> For the complete documentation index, see [llms.txt](https://marblejs.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://marblejs.gitbook.io/docs/other/api-reference/marblejs-http/core-combineroutes.md).

# combineRoutes

### **Importing**

```typescript
import { combineRoutes } from '@marblejs/http';
```

### **Type declaration**

```
combineRoutes :: (string, RouteCombinerConfig) -> RouteEffectGroup
combineRoutes :: (string, (RouteEffect | RouteEffectGroup)[]) -> RouteEffectGroup
```

### **Parameters**

| *parameter*       | definition                                                      |
| ----------------- | --------------------------------------------------------------- |
| *path*            | `string`                                                        |
| *configOrEffects* | `RouteCombinerConfig \| Array<RouteEffect \| RouteEffectGroup>` |

#### ***RouteCombinerConfig***

| *parameter* | definition                                |
| ----------- | ----------------------------------------- |
| effects     | `Array<RouteEffect \| RouteEffectGroup>`  |
| middlewares | \<optional> `Array<HttpMiddlewareEffect>` |

### Returns

Factorized `RouteEffectGroup` object.

### Example

{% tabs %}
{% tab title="user.effects.ts" %}

```typescript
import { combineRoutes } from '@marblejs/http';
import { authorize$ } from 'auth.middleware';

// const getUsers$ = ...
// const postUser$ = ...

export const user$ = combineRoutes('/user', {
  middlewares: [authorize$],
  effects: [getUsers$, postUser$],
});
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="api.effects.ts" %}

```typescript
import { combineRoutes } from '@marblejs/http';
import { user$ } from './user.effects';

// const root$ = ...
// const notFound$ = ...

export const api$ = combineRoutes('/api/v1', [
  root$,
  user$,
  notFound$,
]);
```

{% endtab %}
{% endtabs %}
