added fake api call
This commit is contained in:
parent
db3b7345d2
commit
1a904e94ff
3
.npmrc
Normal file
3
.npmrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
registry=https://nexus.armundia.com/repository/npm-public
|
||||||
|
//nexus.armundia.com/repository/:_authToken=NpmToken.d8eed85e-3da0-3098-b802-07d9f4ab5c54
|
||||||
|
always-auth=true
|
@ -65,7 +65,8 @@
|
|||||||
"serve": {
|
"serve": {
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
"options": {
|
"options": {
|
||||||
"browserTarget": "angular-project-demo:build"
|
"browserTarget": "angular-project-demo:build",
|
||||||
|
"proxyConfig": "proxy.config.json"
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
|
63
db.json
Normal file
63
db.json
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"posts": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"title": "Hello World"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"title": "Another Post"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "John Doe",
|
||||||
|
"email": "john@example.com",
|
||||||
|
"role": [
|
||||||
|
"Admin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "Jane Dooee",
|
||||||
|
"email": "jane@example.com",
|
||||||
|
"role": [
|
||||||
|
"User"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"name": "Bob Smith",
|
||||||
|
"email": "bob@example.com",
|
||||||
|
"role": [
|
||||||
|
"Moderator",
|
||||||
|
"User"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"name": "Alice Johnson",
|
||||||
|
"email": "alice@example.com",
|
||||||
|
"role": [
|
||||||
|
"User"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"name": "Mike Brown",
|
||||||
|
"email": "mike@example.com",
|
||||||
|
"role": [
|
||||||
|
"Admin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test",
|
||||||
|
"email": "test",
|
||||||
|
"role": [
|
||||||
|
"Admin"
|
||||||
|
],
|
||||||
|
"id": 6
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1658
package-lock.json
generated
1658
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -26,8 +26,13 @@
|
|||||||
"ag-grid-community": "^22.1.1",
|
"ag-grid-community": "^22.1.1",
|
||||||
"bootstrap": "^4.1.1",
|
"bootstrap": "^4.1.1",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
|
"cors": "^2.8.5",
|
||||||
|
"express": "^4.17.1",
|
||||||
"font-awesome": "^4.7.0",
|
"font-awesome": "^4.7.0",
|
||||||
|
"json-server": "^0.16.3",
|
||||||
"rxjs": "~6.3.3",
|
"rxjs": "~6.3.3",
|
||||||
|
"swagger-jsdoc": "^6.0.0",
|
||||||
|
"swagger-ui-express": "^4.1.6",
|
||||||
"tslib": "^1.9.0",
|
"tslib": "^1.9.0",
|
||||||
"zone.js": "~0.8.26"
|
"zone.js": "~0.8.26"
|
||||||
},
|
},
|
||||||
|
9
proxy.config.json
Normal file
9
proxy.config.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"/api": {
|
||||||
|
"target": "http://localhost:3001/api",
|
||||||
|
"secure": false,
|
||||||
|
"changeOrigin": true,
|
||||||
|
"logLevel": "debug"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
35
server.js
Normal file
35
server.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const swaggerUi = require('swagger-ui-express');
|
||||||
|
const swaggerJsdoc = require('swagger-jsdoc');
|
||||||
|
const jsonServer = require('json-server');
|
||||||
|
|
||||||
|
const app = express();
|
||||||
|
const port = 3001; // different from Angular 4200
|
||||||
|
|
||||||
|
const cors = require('cors');
|
||||||
|
app.use(cors());
|
||||||
|
// Swagger setup
|
||||||
|
const options = {
|
||||||
|
swaggerDefinition: {
|
||||||
|
openapi: '3.0.0',
|
||||||
|
info: {
|
||||||
|
title: 'Fake API',
|
||||||
|
version: '1.0.0',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apis: ['./swagger.yaml'], // Your API spec
|
||||||
|
};
|
||||||
|
|
||||||
|
const swaggerSpec = swaggerJsdoc(options);
|
||||||
|
|
||||||
|
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
|
||||||
|
|
||||||
|
// JSON Server setup
|
||||||
|
const router = jsonServer.router('db.json');
|
||||||
|
const middlewares = jsonServer.defaults();
|
||||||
|
app.use('/api', middlewares, router);
|
||||||
|
|
||||||
|
app.listen(port, () => {
|
||||||
|
console.log(`🚀 Server running at http://localhost:${port}`);
|
||||||
|
console.log(`📚 Swagger docs at http://localhost:${port}/api-docs`);
|
||||||
|
});
|
@ -1,6 +1,6 @@
|
|||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { AppRoutingModule } from './app-routing.module';
|
import { AppRoutingModule } from './app-routing.module';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { MenuComponent } from '../components/menu/menu.component';
|
import { MenuComponent } from '../components/menu/menu.component';
|
||||||
@ -17,6 +17,7 @@ import { DashboardComponent } from 'src/components/dashboard/dashboard.component
|
|||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
|
HttpClientModule
|
||||||
],
|
],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<nav class="navbar navbar-dark bg-dark navbar-expand-lg bg-body-tertiary">
|
<nav class="navbar navbar-dark bg-dark navbar-expand-lg bg-body-tertiary">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<a class="navbar-brand" href="#">Navbar</a>
|
<a class="navbar-brand" href="#">Angular Tutorial</a>
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
<p>
|
<div class="container-fluid">
|
||||||
users works!
|
<div class="row">
|
||||||
</p>
|
<div class="col-12">
|
||||||
|
<button class="btn btn-primary" type="button">Add new User</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<!-- Table of users -->
|
||||||
|
<p>users works!</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
button{
|
||||||
|
float: right;
|
||||||
|
margin: 2rem;
|
||||||
|
}
|
@ -1,15 +1,44 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from "@angular/core";
|
||||||
|
import { ServicesService } from "src/services/services.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-users',
|
selector: "app-users",
|
||||||
templateUrl: './users.component.html',
|
templateUrl: "./users.component.html",
|
||||||
styleUrls: ['./users.component.scss']
|
styleUrls: ["./users.component.scss"],
|
||||||
})
|
})
|
||||||
export class UsersComponent implements OnInit {
|
export class UsersComponent implements OnInit {
|
||||||
|
users: any[] = []; // where you store users
|
||||||
constructor() { }
|
newUser: any = {
|
||||||
|
name: 'test',
|
||||||
|
email: 'test',
|
||||||
|
role: ['Admin']
|
||||||
|
};
|
||||||
|
constructor(private servicesService: ServicesService) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.getUsers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getUsers() {
|
||||||
|
this.servicesService.get<any[]>("users").subscribe(
|
||||||
|
(data) => {
|
||||||
|
this.users = data;
|
||||||
|
console.log("Users loaded:", data);
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.error("Error loading users:", error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
createUser() {
|
||||||
|
this.servicesService.post('users', this.newUser)
|
||||||
|
.subscribe(
|
||||||
|
response => {
|
||||||
|
console.log('User created successfully:', response);
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
console.error('Error creating user:', error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import { Observable } from 'rxjs';
|
|||||||
})
|
})
|
||||||
export class ServicesService {
|
export class ServicesService {
|
||||||
|
|
||||||
private baseUrl = 'https://your-api-url.com/api'; // Set your base URL
|
private baseUrl = 'http://localhost:3001/api';
|
||||||
|
|
||||||
constructor(private http: HttpClient) {}
|
constructor(private http: HttpClient) {}
|
||||||
|
|
||||||
|
17
swagger.yaml
Normal file
17
swagger.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
openapi: 3.0.0
|
||||||
|
info:
|
||||||
|
title: Fake API
|
||||||
|
version: "1.0"
|
||||||
|
paths:
|
||||||
|
/api/posts:
|
||||||
|
get:
|
||||||
|
summary: Get all posts
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: List of posts
|
||||||
|
/api/users:
|
||||||
|
get:
|
||||||
|
summary: Get all users
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: List of users
|
Loading…
x
Reference in New Issue
Block a user