0

在我的一生中,我无法InMemoryWebApiModule使用适度简单的自定义 URL 解析器(特别是用于 OData)为我工作。

这是我的模块配置:

InMemoryWebApiModule.forRoot(MockApiService, { apiBase: 'api/', delay: 0, passThruUnknownUrl: true }),

这是我的服务:

import { InMemoryDbService, RequestInfoUtilities, ParsedRequestUrl } from 'angular-in-memory-web-api';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class MockApiService implements InMemoryDbService {
  constructor() {
  }

  public createDb() {
    const stuff = [
      { id: 1, name: 'Windstorm' },
      { id: 2, name: 'Bombasto' },
      { id: 3, name: 'Magneta' },
      { id: 4, name: 'Tornado' }
    ];
    return { stuff };
  }

  public parseRequestUrl(url: string, requestInfoUtils: RequestInfoUtilities): ParsedRequestUrl {
    const isId = /^([^?]+?)\(([^?]*?)\)/.exec(url);
    if (!!isId) {
      const path = isId[1];
      const parts = path.split('/').filter(_ => !!_);
      const set = parts[parts.length - 1];
      const key = isId[2];
      console.log('Found with key');
      return requestInfoUtils.parseRequestUrl(`/api/${set}/${key}`)
      // Have tried all the below, too
      // return requestInfoUtils.parseRequestUrl(`api/${set}/${key}`)
      // return requestInfoUtils.parseRequestUrl(`/${set}/${key}`)
      // return requestInfoUtils.parseRequestUrl(`${set}/${key}`)
    }
    return undefined;
  }
}

这是我的要求:

api/stuff(1)

我的代码可以Found with key使用正确的值记录setand key,但我仍然得到 404。

我究竟做错了什么?

4

1 回答 1

0

我刚刚解决了这个问题。橡皮鸭,嗯。

return { apiBase: `${parts[0]}/`, collectionName: set, id: key } as ParsedRequestUrl;
于 2020-03-26T10:51:41.797 回答