在 angular-in-memory-web-api 中执行 PUT 或 POST 的正确方法

xyz*_*xyz 6 angular

看过这个,但这个问题没有答案。所以再问这个问题。

我试图实现一个 PUT。没有工作,我查了requestInformation,并responseresponseInterceptor。事实证明,控件永远不会到达我的responseInterceptor.

这是http代码:

put(url: string, body, options?:RequestOptionsArgs): Observable<StandardModelResponse>{
    console.log("inside put, url = ", url, " body = ", body);
    return this._http.put(url,body,this._updateRequestHeader(options)); 
}
Run Code Online (Sandbox Code Playgroud)

收到的日志是:

在此处输入图片说明

InMemoryDbService有一个收藏:

let sessionData = [
  {
    id: 1,
    loginActive: 0
  }
];
Run Code Online (Sandbox Code Playgroud)

它返回这样的集合:

return {sessionData}
Run Code Online (Sandbox Code Playgroud)

我查看了源代码,是的,确实有一个 post 和 put 的实现,但是我in-memory-backend.service.ts在我node-modules的调试中找不到该文件,而是在in-memory-backend.service.js那里。打这个POST电话的正确方法是什么,我在这里错过了什么?

Gry*_*ffe 0

您可以通过将 post 方法添加到 InMemoryDbService 的实现中来“覆盖”(我不确定是否发生了这种情况)

import { InMemoryDbService } from 'angular-in-memory-web-api';
import { getStatusText, STATUS } from 'angular-in-memory-web-api/http-status-codes';
import { ParsedRequestUrl, RequestInfo, RequestInfoUtilities, ResponseOptions } from 'angular-in-memory-web-api/interfaces';
.....

  post(reqInfo: RequestInfo) {

  }
...
Run Code Online (Sandbox Code Playgroud)

您可以实现它来执行类似 get 方法的实现之类的操作,如下所示: source

我希望这有帮助。似乎有效:)