> 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-httplistener.md).

# httpListener

Starting point of every Marble.js application. It includes definitions of all middlewares and API effects.

### **Importing**

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

### **Type declaration**

```typescript
httpListener :: HttpListenerConfig -> Reader<Context, HttpListener>
```

### **Parameters**

| *parameter* | definition           |
| ----------- | -------------------- |
| *config*    | `HttpListenerConfig` |

#### ***HttpListenerConfig***

| *parameter*   | definition                                           |
| ------------- | ---------------------------------------------------- |
| *effects*     | \<optional> `Array<RouteEffect \| RouteEffectGroup>` |
| *middlewares* | \<optional> `Array<HttpMiddlewareEffect>`            |
| *error$*      | \<optional> `HttpErrorEffect`                        |
| *output$*     | \<optional> `HttpOutputEffect`                       |

### Returns

`Reader<Context, HttpListener>`

### **Example**

{% code title="http.listener" %}

```typescript
import { httpListener } from '@marblejs/http';
import { bodyParser$ } from '@marblejs/middleware-body';
import { logger$ } from '@marblejs/middleware-logger';
import { api$ } from './api';

const middlewares = [
  logger$(),
  bodyParser$(),
];

const effects = [
  api$,
];

export const listener = httpListener({ middlewares, effects });
```

{% endcode %}
