javascript - Angular-in-memory-web-api 中多个集合出现错误 404

标签 javascript angular in-memory-database

我正在使用angular-in-memory-web-api模块来模拟我的服务器响应。这是in-memory-data.service.ts

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

@Injectable()
export class InMemoryData  implements InMemoryDbService {
    createDb() {

    let deviceConfig = [
            {
                "itemName": "Device Type",
                "itemValue": "EtnerNet/IP (Script)",
                "editable": false
              },
              {
                "itemName": "Software version",
                "itemValue": "V 4.0",
                "editable": false
              },
              {
                "itemName": "Script revision",
                "itemValue": "37",
                "editable": false
              },
              {
                "itemName": "Serial Number",
                "itemValue": "12341234",
                "editable": true
              },
              {
                "itemName": "Script memory",
                "itemValue": "16320",
                "editable": true
              },
              {
                "itemName": "Data memory",
                "itemValue": "8192",
                "editable": true
              }
    ];
    let fieldbusConfig: [
              {
                  "itemName": "IP Adress Unitgate",
                  "itemValue": "0.0.0.0",
                  "editable": true
              },
                  {
                  "itemName": "Subnet Mask",
                  "itemValue": "0.0.0.0",
                  "editable": true
              },
              {
                  "itemName": "IP Adress Gateway",
                  "itemValue": "0.0.0.0",
                  "editable": true
              },
              {
                  "itemName": "DHCP",
                  "itemValue": "enabled",
                  "editable": true
              }
    ];

    let applicationProtocol: [
        {id: 0, value: "transparent"},
        {id: 1, value: "Universal 232"},
        {id: 2, value: "Modbus RTU Master"},
        {id: 3, value: "Modbus RTU Slave"},
        {id: 4, value: "Modus ASCII Master"},
        {id: 5, value: "Modbus ASCII Slave"},
        {id: 6, value: "3964(R)"},
        {id: 7, value: "CS(Pseudo)"},
        {id: 8, value: "Universal Modbus RTU Master"},
        {id: 9, value: "Universal Modbus RTU Slave"},
        {id: 10, value: "Universal ASCII RTU Master"},
        {id: 11, value: "Universal ASCII RTU Slave"}
    ];
    return {fieldbusConfig, applicationProtocol, deviceConfig};
    }
}

在我的 config.service.ts 中,我通过下面代码中的 URls 来访问集合

import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';

import {ConfigItem} from './objects/config-item';

@Injectable()
export class ConfigService {

    private configUrl ='api/deviceConfig';
    private fieldbusConfigUrl ='api/fieldbusConfig';


    private headers = new Headers({'Content-Type': 'application/json'});

    constructor(private http: Http) { } 


    getDeviceConfig(): Promise<ConfigItem[]> {
        var test; 
        console.log(this.configUrl);
      test = this.http.get(this.configUrl)
                 .toPromise()
                 .then(response => response.json().data as ConfigItem[])
                 .catch(this.handleError);
      console.log(test);
      return test;
    }

    getFieldbusConfig(): Promise<ConfigItem[]> {
        var test; 
        console.log(this.fieldbusConfigUrl);
      test = this.http.get(this.fieldbusConfigUrl)
                 .toPromise()
                 .then(response => response.json().data as ConfigItem[])
                 .catch(this.handleError);
      console.log(test);
      return test;
    }


    // Handle Errors
    private handleError(error: any): Promise<any> {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 'Server error';
          console.error(errMsg);
     return Promise.reject(errMsg);
    }
}

它对于 api/deviceConfig URL 工作正常,da 按预期检索并显示。对于第二个 URL api/fieldbusConfig,我收到 404 错误。

尽管在另一个名为 application-data.service.ts

的服务中
import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';

import {ProtocolItem} from './../objects/protocol-item';

@Injectable()
export class ApplicationDataService {
    private applicationConfigUrl ='api/applicationConfig';
    private applicationProtocolUrl ='api/applicationProtocol';

    private headers = new Headers({'Content-Type': 'application/json'});

    constructor(private http: Http){};

    getProtocols(): Promise<ProtocolItem[]> {
        var test; 

      test = this.http.get(this.applicationProtocolUrl)
                 .toPromise()
                 .then(response => response.json().data as ProtocolItem[])
                 .catch(this.handleError);
      console.log(test);
      return test;
    }

    private handleError(error: any): Promise<any> {
        console.error('An error occurred', error); // for demo purposes only
        return Promise.reject(error.message || error);
       }
}

我尝试接收 applicationProtocol 集合,这也失败并出现 404 错误。

我在 stackoverflow 上搜索了解决方案,似乎没问题。我的错误是什么?

最佳答案

第二个和第三个列表的语法错误。您应该使用“=”而不是“:”。

let deviceConfig = [
        {
            "itemName": "Device Type",
            "itemValue": "EtnerNet/IP (Script)",
            "editable": false
          },
          {
            "itemName": "Software version",
            "itemValue": "V 4.0",
            "editable": false
          },
          {
            "itemName": "Script revision",
            "itemValue": "37",
            "editable": false
          },
          {
            "itemName": "Serial Number",
            "itemValue": "12341234",
            "editable": true
          },
          {
            "itemName": "Script memory",
            "itemValue": "16320",
            "editable": true
          },
          {
            "itemName": "Data memory",
            "itemValue": "8192",
            "editable": true
          }
];
let fieldbusConfig = [
          {
              "itemName": "IP Adress Unitgate",
              "itemValue": "0.0.0.0",
              "editable": true
          },
              {
              "itemName": "Subnet Mask",
              "itemValue": "0.0.0.0",
              "editable": true
          },
          {
              "itemName": "IP Adress Gateway",
              "itemValue": "0.0.0.0",
              "editable": true
          },
          {
              "itemName": "DHCP",
              "itemValue": "enabled",
              "editable": true
          }
];

let applicationProtocol = [
    {id: 0, value: "transparent"},
    {id: 1, value: "Universal 232"},
    {id: 2, value: "Modbus RTU Master"},
    {id: 3, value: "Modbus RTU Slave"},
    {id: 4, value: "Modus ASCII Master"},
    {id: 5, value: "Modbus ASCII Slave"},
    {id: 6, value: "3964(R)"},
    {id: 7, value: "CS(Pseudo)"},
    {id: 8, value: "Universal Modbus RTU Master"},
    {id: 9, value: "Universal Modbus RTU Slave"},
    {id: 10, value: "Universal ASCII RTU Master"},
    {id: 11, value: "Universal ASCII RTU Slave"}
];
return {fieldbusConfig, applicationProtocol, deviceConfig};
}
}

试试这个。

关于javascript - Angular-in-memory-web-api 中多个集合出现错误 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387948/

相关文章:

vb.net - 如何使用C#vb.net控制内存DB消耗中的SQLite

javascript - 检查 Javascript 是否可用并重定向到另一个页面

jquery - 使用 webpack 在 Angular2 中包含 jQuery 并从组件访问它

java - 将数据从数据库导入到 GemFire

angular - 带有 routerLink 指令的单元测试按钮

javascript - Firebase 快照返回对象而不是数组来迭代

hadoop - Apache Ignite:如何在服务器节点关闭时将客户端节点的连接实例设置为 'NULL'打开?

php - 尝试将 span 元素的值输入数据库

javascript - Node.js mysql循环仅显示最后一个条目

javascript - Vue.js bulma 模式未显示