typescript - Kan inte skicka POST-förfrågningar i Angular med HttpClient


Jag försöker skicka en POST-begäran till en JSON-fil i TypeScript, Angular med HttpClient. Men jag får ett 404 inte hittad-fel, som säger att filen results.json inte kan hittas. Jag tycker att detta är konstigt eftersom GET-begäran fungerar alldeles utmärkt. För närvarande använder jag Angular 15.

Jag försökte följande:

    let emptyObject = {};

    const headers = new HttpHeaders()
    .set('Content-Type', 'application/json');

    this.http.post('/assets/results.json', emptyObject, {headers})
    .subscribe((res:any) => {
        console.log(res);
    }, error => {
        console.log(error)
    });

Filen results.json är tom och ser bara ut så här:

[ ]

När funktionen körs står det:

HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: 'Not Found', url: 'http://localhost:4200/assets/results.json', ok: false, …}

Jag vet att filen finns och att filsökvägen fungerar eftersom jag använder samma för get-förfrågningar. Finns det kanske ett alternativ jag behöver aktivera eller inaktivera? Det borde väl vara möjligt, eller?

Svar #1

Du behöver något som json-server eller någon server för att hantera POST-förfrågan. En GET-förfrågan är precis som din webbläsare, den hämtar bara en resurs från en specifik URL, en POST-förfrågan kan inte bara skicka data till någon fil, den måste hanteras av en server. För ett snabbt sätt att ställa in detta för utveckling är npm-paketet json-server väldigt bra om du ännu inte har någon erfarenhet av att sätta upp server: https://www.npmjs.com/package/json-server

Lite extra dokumentation om hur REST fungerar om du är intresserad: https://www.codecademy.com/article/what-is-rest