I want this project working with Json-server(localhost:3000) to work with Firebase. However, when I write the firebase link in the url and run the project, I get a CORS error.
json-server working code;
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Employee } from '../shared/employee';
import { Observable, throwError } from 'rxjs';
import { retry, catchError } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
})
export class RestApiService {
// Define API
apiURL = 'http://localhost:3000';
constructor(private http: HttpClient) {}
// Http Options
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
}),
};
// HttpClient API get() method => Fetch employees list
getEmployees(): Observable<Employee> {
return this.http
.get<Employee>(this.apiURL + '/employees')
.pipe(retry(1), catchError(this.handleError));
}
// HttpClient API get() method => Fetch employee
getEmployee(id: any): Observable<Employee> {
return this.http
.get<Employee>(this.apiURL + '/employees/' + id)
.pipe(retry(1), catchError(this.handleError));
}
// HttpClient API post() method => Create employee
createEmployee(employee: any): Observable<Employee> {
return this.http
.post<Employee>(
this.apiURL + '/employees',
JSON.stringify(employee),
this.httpOptions
)
.pipe(retry(1), catchError(this.handleError));
}
// HttpClient API put() method => Update employee
updateEmployee(id: any, employee: any): Observable<Employee> {
return this.http
.put<Employee>(
this.apiURL + '/employees/' + id,
JSON.stringify(employee),
this.httpOptions
)
.pipe(retry(1), catchError(this.handleError));
}
// HttpClient API delete() method => Delete employee
deleteEmployee(id: any) {
return this.http
.delete<Employee>(this.apiURL + '/employees/' + id, this.httpOptions)
.pipe(retry(1), catchError(this.handleError));
}
// Error handling
handleError(error: any) {
let errorMessage = '';
if (error.error instanceof ErrorEvent) {
// Get client-side error
errorMessage = error.error.message;
} else {
// Get server-side error
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
}
window.alert(errorMessage);
return throwError(() => {
return errorMessage;
});
}
}
This is how I do the url change;
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Employee } from '../shared/employee';
import { Observable, throwError } from 'rxjs';
import { retry, catchError } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
})
export class RestApiService {
// Define API
apiURL = 'https://deneme-8cbfb-default-rtdb.europe-west1.firebasedatabase.app/';
constru.......
.....
I get a CORS error on any transaction(POST, PUT, and DELETE);
(Access to XMLHttpRequest at 'https://deneme-8cbfb-default-rtdb.europe-west1.firebasedatabase.app//employees' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.)
(Failed to load resource: net::ERR_FAILED)