# ngx-rest-service

> npm install ngx-rest-servic

Latest version **0.0.7** (published 2020-09-08) · 0 weekly downloads

## Install

```sh
npm install ngx-rest-service
pnpm add ngx-rest-service
yarn add ngx-rest-service
bun add ngx-rest-service
```

## Health

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

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.7 |
| Published | 2020-09-08 |
| First published | 2020-09-08 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 197.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | ozergul |

## Links

- npm: https://www.npmjs.com/package/ngx-rest-service
- npm.io page: https://npm.io/package/ngx-rest-service

## Dependencies (1)

- [tslib](https://npm.io/package/tslib.md) ^2.0.0

## Recent versions

- 0.0.7 (latest) — 2020-09-08
- 0.0.6 — 2020-09-08
- 0.0.5 — 2020-09-08
- 0.0.4 — 2020-09-08
- 0.0.3 — 2020-09-08
- 0.0.2 — 2020-09-08
- 0.0.1 — 2020-09-08
- 1.0.3 — 2020-09-08
- 1.0.2 — 2020-09-08
- 1.0.1 — 2020-09-08
- 1.0.0 — 2020-09-08

## README

## Install

    npm install ngx-rest-servic

or

    yarn add ngx-rest-service 
    
### Usage
Add to imports:
```typescript
@NgModule({  
  imports: [  
    NgxRestModule.forRoot({  
      apiBaseUrl: 'http://localhost:3001', // <---- base url, you can get from environment.
    }),  
  ],  
})
```
    
Extend RestService in your service:
```typescript
import { Injectable } from '@angular/core';  
import { Observable } from 'rxjs';  
import { Auth, User } from '../../models';  
import { Body, Get, Post, RestService } from 'ngx-rest-service';  
  
@Injectable({  
  providedIn: 'root',  
})  
export class AuthService extends RestService {  
  @Post('/auth/login')  
  login(@Body userLoginRequest: Auth.UserLoginRequest): Observable<Auth.LoginResponse> {  
    return null;  
  }  
  
  @Post('/auth/register')  
  register(@Body userRegisterRequest: Auth.UserRegisterRequest): Observable<User> {  
    return null;  
  }  
  
  @Get('/auth/me')  
  inquireMe(): Observable<User> {  
    return null;  
  }  
}
```
#### @Get()
You can use @Get() decorator to make GET request:
```typescript
@Get('/projects')  
getProjects(): Observable<Project> {  
  return null;  
}
```
Equals:

    <apiBaseUrl>/projects

---
```typescript
@Get('/projects/{code}')  
getProjectByCode(@Path('code') code: string): Observable<Project> {  
  return null;  
}
```
Equals:

    <apiBaseUrl>/projects/{code}
---
  
```typescript
@Get('/projects')  
getProjects(@Query('page') page?: number, @Query('limit') limit?: number): Observable<Pagination<Project>> {  
  return null;  
}
```
Equals:

    <apiBaseUrl>/projects?page={page}&limit={limit}
---
```typescript
@Get('/projects/{id}')   
inquireAcquisitionCredit(
  @Path('id') id: number,  
  @Params('personCount') personCount: number,  
): Observable<Project[]> {  
  return null;  
}
```
Equals:

    <apiBaseUrl>//projects/{id}

Query String Parameters

    personCount: ${personCount}

#### @Post()
```typescript
@Post('/projects/create')  
createProject(@Body project: Project): Observable<Project> {  
  return null;  
}
```

#### @Put()
```typescript
@Put('/projects/update')  
updateProject(@Body project: Project): Observable<Project> {  
  return null;  
}
```
### @Delete()
```typescript
@Delete('/projects/{id}')  
deleteProject(@Path('id') id: number): Observable<DeleteResult> {  
  return null;  
}
```
### Download  blob example
```typescript
@Get('/downloadExcel')    
@Headers({  
  Accept: 'application/octet-stream,application/json',  
})  
@ResponseType(eHTTP.ResponseType.Blob)  
inquireBillingAccountChargesSummaryExcel(  
  @Body body: DownloadProjectsExcelRequest,  
): Observable<Blob> {  
  return null;  
}
```

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