当前位置: 首页 > 知识库问答 >
问题:

如何使用API访问后端的角形前端图像

柳英豪
2023-03-14

我有一个棱角的前端,我想有访问图像在我的后端。因此,我创建了经过安全验证的webservices;

//AppParam{int id, AppFileInfo logo}
@GetMapping(value = "/allParam")
    public List<AppParam> getAllParams (){
        return paramsSiteService.findAllParam();
    }
// model 
export class ParamSite {
    public id: string;
    public file;
    constructor(file) {
      this.file = file;
    }
  }

//service
@Injectable({
  providedIn: 'root'
})
export class ParamSiteService {
  host: string;
  headers;

  constructor(private http: HttpClient, private authService: AuthentificationService, private appConfigService: AppConfigService) {
    this.headers = new HttpHeaders({'authorization': this.authService.jwt});
    this.host = this.appConfigService.getMyUrl();
  }
...
getAllParam(): Observable<any> {
    console.log(this.host);
    console.log(this.headers);
    console.log(this.authService.jwt);
    return this.http.get(this.host + "/allParam", {headers: this.headers})
    .pipe(catchError((error: any) => {
      console.log(error); 
      return Observable.throw(error);}
      ));;
  }

//html
<img  src={{logo.file}} alt="" width="50">

// ts
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  showFiller: boolean;
  logo ;

  constructor(private authService: AuthentificationService, private router: Router,
     private frontDynamic: FrontDynamicService,private cdRef:ChangeDetectorRef
     ,private paramSiteService: ParamSiteService) {
  }

 ngOnInit(): void {
    this.authService.loadToken();
    this.getLogo();
  }
  ngAfterViewChecked(){
    this.cdRef.detectChanges();
  }
  ngOnDestroy(): void {
    this.onLogOut()
  };
  onLogOut() {
    return this.authService.logout()
  }
 public getLogo(){
    this.paramSiteService.getAllParam().pipe(take(1)).subscribe(param => {
      this.logo = param;
      console.log(param);
    },
    error => console.log(error)
  );
  }
...
}

core.js:4081错误类型错误:无法读取未定义的属性“file”

console.log“GetAllParam()

param-site.service.ts:35 http://localhost:8082

共有1个答案

屠晟睿
2023-03-14

我通过允许所有人使用webservice解决了这个问题。

这不是最好的解决方案,但主要组件,我应该把登录作为主要组件。

 类似资料:
  • 我尝试连接angular前端和springboot后端... 所以任何人都可以告诉我这里的错误在哪里....?

  • 我正在使用magento 1.9社区版,突然我无法访问magento前端和magento后端 这是错误页 跟踪UTF8',Array)../public_html/lib/varien/db/adapter/pdo/mysql.php(504):Zend_db_adapter_pdo_abstract->查询('set NAMES UTF8',Array)../public_html/app/co

  • 我在Laravel中创建了两个项目,一个是护照服务器,另一个是客户端。我在服务器项目中配置了完整的护照。我也得到了access_token。 当我授权我的客户端项目时,它会在我的浏览器中显示这个。 {“令牌类型”:“承载”、“到期日”:31536000,“访问令牌”:*******,“刷新令牌”:******} 现在,我的问题是如何为用户传递/授予访问令牌并转到我的客户端面板。我已经用邮递员检查过

  • 我已经通过creat-react-app创建了一个前端应用程序。 命令“npm run start”可以创建一个webpack-dev-server,并为我的 前端应用程序提供开发服务。问题来了: 我的前端应用程序必须从我之前创建的节点服务器请求一些api。 默认情况下create-react-app在端口3000上启动webpack-dev-server 我的节点服务器在端口3001上启动 直接

  • 我已经在Azure API管理中创建了一个API,用于从后端API获取数据。后端API使用带有10分钟后过期的访问令牌的oAuth2。使用返回的刷新令牌,您可以获得一个新的访问令牌,该令牌在另外10分钟内仍然有效。等等。 在Azure APIM的开发门户中,可以进行授权,这将使访问时间为10分钟。10分钟后,您必须再次手动进行授权,以便获得另外10分钟的访问权限。 在Azure APIM中是否有一

  • 问题是它对我的测试广告起作用,而对生产广告不起作用。说用户需要在使用图形API之前许可应用程序。(对于生产广告,我只有用户可以添加用户特权,但不能添加应用程序特权。我猜测,要使该方案工作,我需要先许可该广告的全局管理)。最终,我将Web站点和Web API的Azure广告应用程序合并在一起,并且它使用了带有引导令牌的相同的代理方法。但我想知道如何使它与2个应用程序正常工作。