首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular 5 GET REST Api with Authorization return stuts 500内部错误(来自客户端)

Angular 5 GET REST Api with Authorization return stuts 500内部错误(来自客户端)
EN

Stack Overflow用户
提问于 2018-08-30 22:33:27
回答 2查看 416关注 0票数 0

我正在使用IBM Watson tools的音调分析器api。通过邮递员测试,它工作正常,但在角度,它返回错误为500状态。作为音调分析器api,它需要授权,我将凭据放入标题中。

以下是我的代码示例。

service.ts:

代码语言:javascript
运行
复制
const TONE_API = "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&text=";

const httpOptions = {
  headers: new Headers({
    'Content-Type':  'application/json',
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization',
    'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
    'Authorization': 'Basic ************************:************'
  })
};
const options: RequestOptionsArgs = new RequestOptions();
options.headers = httpOptions.headers;

@Injectable()
export class ToneAnalyserService {

  constructor(private http: Http) { }

  // API: GET /message
  getAnalyser(message:string) {
    let url = TONE_API + message;
    return this.http.get(url, options)
      .map(res => res.json())
      .catch(err=>{
        throw(err);
      });
  } 

component.ts:

代码语言:javascript
运行
复制
 this.message = "I like this idea!"; 
   this.toneAnalyser.getAnalyser(this.message).subscribe(res =>{
     this.result = res;
       console.log(res.json());
      }, err => {
        console.log(err);
      });
EN

回答 2

Stack Overflow用户

发布于 2018-08-30 22:49:57

由于CORS的原因,您不能从浏览器应用程序直接调用watsonplatformwatsonplatform不支持该策略。

您必须创建自己的后端服务,它将代理您的请求。

OR:

对于本地开发,您可以创建proxy.config.js别名:

代码语言:javascript
运行
复制
module.exports = {
  '/watsonplatform': {
    target: 'https://gateway.watsonplatform.net/',
    secure: false,
    changeOrigin: true
  },
};

并从诸如get('/watsonplatform/tone-analyzer/api/v3/tone?version=2017-09-21&text=')之类的应用程序进行调用

当你要托管你的应用程序时,使用nginx别名来做同样的事情。

票数 1
EN

Stack Overflow用户

发布于 2018-08-31 18:02:09

我确实按照你说的配置了代理并设置了Api。同时,我编辑了代码并尝试调用路由,但返回的url404在控制台中找不到。

代码语言:javascript
运行
复制
GET http://localhost:4200/watsonplatform/tone-analyzer/api/v3/tone?version=2017-09-21&text=I%27m%20happy 404 (Not Found)

示例如下:

代码语言:javascript
运行
复制
baseUrl ="/watsonplatform/tone-analyzer/api/v3/tone?version=2017-09-21&text=";

  constructor(private accountService: AccountService, private toneAnalyser: ToneAnalyserService,
  private http:HttpClient) { }

  ngOnInit() {

    const options = {
      headers: new HttpHeaders({
        'Content-Type': 'application/x-www-form-urlencoded',
        'Authorization': 'Basic fc52487b-f8e5-4948-a11c-43901c0b6a0d:NsP8HyWsoLw8',
        'Access-Control-Allow-Origin':'*',
        'Access-Control-Allow-Headers':'Origin, X-Requested-With, Content-Type, Accept, Authorization',
        'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS'       
      })
    };

    this.http.get(this.baseUrl+"I'm happy",options).subscribe(data=> {
      console.log(data);
    });
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52099618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档