我有一个名为fake的json
文件。我的angular应用程序中的json内部资源。此文件的路径如下所示。
MyApp=
我想使用我的组件中的HttpClient(位于应用程序文件夹内)对此文件发出POST
请求。
MyApp=
组件源代码
export class StatisticsComponent {
persons: Person[];
options = {
sDom: 'rt<"bottom"p>',
pagingType: 'full_numbers',
pageLength: 10,
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
this.http
.post<DataTablesResponse>(
'./../../assets/json/fake.json',
dataTablesParameters, {}
).subscribe(resp => {
this.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
columns: [
{ data: "id" },
{ data: "firstName" },
{ data: "lastName" }
]
};
constructor(private http: HttpClient) {
}
}
class Person {
id: number;
firstName: string;
lastName: string;
}
class DataTablesResponse {
data: any[];
draw: number;
recordsFiltered: number;
recordsTotal: number;
}
我发生了以下错误
的HttpErrorResponse Http故障响应http://localhost:4200/assets/json/fake.json:404找不到
我对此有两个疑问。
>
使用Http或HttpClient向本地json文件发出POST
请求是否有效。(到目前为止,我已经使用Http而不是HttpClient完成了GET
请求,并成功地获取了数据)
当文件存在于文件夹中时,为什么返回404未找到。
我需要帮助。
这是因为您在assets
文件夹中放入的任何内容都将通过GET
请求提供。您只需导航到http://localhost:4200/assets/json/fake.json
在浏览器上。如果要测试POST
方法,需要启动服务器。
HttpModule
在Angular的更高版本中被弃用和删除。您应该将其更改为HttpClientModule
要使用HttpClient
对其进行测试,可以执行以下操作。
将HttpClientModule
添加到您的AppModule
在组件中注入HttpClient
构造函数(私有httpClient:httpClient){}
并提出如下要求
this.httpClient.get('/assets/json/fake.json', { observe: 'body' })
.subscribe(result => {
console.log(result);
});
为了从本地JSON文件读取或写入数据,可以使用JSON服务器。
npm i json-server
.json-server--watchfake.json
.http://localhost:3000/
请点击文档链接:https://www.npmjs.com/package/json-server