Angular2 - Nebular主题API端点

时间:2017-11-04 16:42:09

标签: api templates angular2-template nebular

我正在Angular2下开发应用程序,我选择Nebular前端 - https://akveo.github.io/nebular/#/home

文档对我来说并不是很详细,我不是Angular2的专家。

我正在努力 - API端点https://akveo.github.io/nebular/#/docs/auth/configuring-a-provider

我可以在哪里保存API基点?在哪个文件或文件的一部分?

受影响的代码:

{
 baseEndpoint: 'http://...
...

我的代码(core.module.js):

import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NbEmailPassAuthProvider, NbAuthModule } from '@nebular/auth';

import { throwIfAlreadyLoaded } from './module-import-guard';
import { DataModule } from './data/data.module';
import { AnalyticsService } from './utils/analytics.service';

import { environment } from './../../environments/environment';

const NB_CORE_PROVIDERS = [
  ...DataModule.forRoot().providers,
  ...NbAuthModule.forRoot({
    providers: {
      email: {
        service: NbEmailPassAuthProvider,
        config: {
          delay: 3000,
          login: {
            rememberMe: true,
          },
        },
      },
    },
    forms: {
      validation: {
        password: {
          required: true,
          minLength: 6,
          maxLength: 255,
        },
        email: {
          required: true,
        }
      }
    }
  }).providers,
  AnalyticsService
];

@NgModule({
  imports: [
    CommonModule,
  ],
  exports: [
    NbAuthModule,
  ],
  declarations: [],
})
export class CoreModule {
  constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
    throwIfAlreadyLoaded(parentModule, 'CoreModule');
  }

  static forRoot(): ModuleWithProviders {
    return <ModuleWithProviders>{
      ngModule: CoreModule,
      providers: [
        ...NB_CORE_PROVIDERS,
      ],
    };
  }
}

3 个答案:

答案 0 :(得分:1)

我试图将它付诸实践,而且我正在手册的同一部分。 据我所知,baseEndpoint: 'http://...和其他配置配置在身份验证提供程序config变量上。看起来像NgEmailPassAuthProviderConfig类型(在@nebular/auth/providers/email-pass-auth.options上定义)。

&#13;
&#13;
@NgModule({
  imports: [
   // ...

   NbAuthModule.forRoot({
         providers: {
           email: {
             service: NbEmailPassAuthProvider,
             config: {
                baseEndpoint: 'http://localhost:8080', // <-- here
                login: {
                  rememberMe: true,
                },
             },
           },
         },
       }), 
  ],
});
&#13;
&#13;
&#13;

我已经设法在Spring rest API上调用它来调用api方法。我可以在status: 200的浏览器上看到HttpResponse,但仍然得到&#34;哦! 出了点问题。&#34; NbLoginComponent上的消息。

答案 1 :(得分:0)

为了正确创建api,请遵循以下步骤

1)在您的本地主机上实现this

2)将此代码添加到core.module.ts

 strategies: [
      NbPasswordAuthStrategy.setup({
        name: 'email',
        login: {
          requireValidToken: false,
        },
        baseEndpoint: 'http://localhost:4400/api/auth/',
        logout: {
          redirect: {
            success: '/auth/login',
            failure: '/auth/login',
          },
        },
        requestPass: {
          redirect: {
            success: '/auth/reset-password',
          },
        },
        resetPass: {
          redirect: {
            success: '/auth/login',
          },
        },
        errors: {
          key: 'data.errors',
        },
      }),
    ],

答案 2 :(得分:0)

我建议在具有内容的项目的根目录中创建一个proxy.conf.json代理

{
   "/api/*": {
     "target": "http://localhost",
     "secure": false,
     "logLevel": "debug"
   }
}

然后使用以下命令启动角度应用程序 $ ng serve --port 8097 --proxy-config proxy.conf.json

记住您在ng serve命令中提到的* 8097 *端口

按如下所示完成添加基本URL:

{
 baseEndpoint: '/api/',
...

有关代理配置的更多信息,请参考https://morioh.com/p/07bddb33e3ab

我希望有帮助