【问题标题】:using angular 5 http.post() to fetch data through rest end point使用 Angular 5 http.post() 通过休息端点获取数据
【发布时间】:2018-05-10 18:57:01
【问题描述】:

我有以下代码,我使用 Angular 5 中的 http.post() 方法通过 REST API 使用数据。

return this._http.post(this.basePath,null, {
      headers: this.myHeaders,
      params: {
        transaction_id : "22"
      } ,
      observe: 'response',
      responseType: 'json'
    })
      .catch(this._errorHandler);

我可以使用 http.get() 成功获取数据,但是使用 post 时我得到 500(内部服务器错误)。

我可能缺少什么?

【问题讨论】:

    标签: http http-post httpclient angular5


    【解决方案1】:

    当您进行 HTTP POST 时,后端服务期望什么?目前您发送的是空正文,这很可能是 HTTP 500(内部服务器错误)的原因。

    仅仅因为您可以发出 HTTP GET 请求,并不总是意味着您可以向同一个 URL 发出 HTTP POST 请求。 POST 通常期望有一些描述的正文。如果不支持 POST,您可能希望后端服务返回 HTTP 406(不支持方法),但这取决于后端服务的编写情况。

    【讨论】:

    • 它只需要我传递的“transaction_id”参数
    • 您将其作为查询参数传递,它是否需要在正文中?服务器期望什么编码/mime 类型 - 形式或 json?
    【解决方案2】:

    我只需将参数作为 post 方法的主体选项的一部分传递,如下所示。

    let bodyParams = {transaction_id : "22"};
    
    return this._http.post(this.basePath,bodyParams , {
              headers: this.myHeaders,,
              observe: 'response',
              responseType: 'json'
            })
              .catch(this._errorHandler);
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      相关资源
      最近更新 更多