【问题标题】:What is the correct way to make a HTTP request from Angular to Node js API?从 Angular 向 Node js API 发出 HTTP 请求的正确方法是什么?
【发布时间】:2020-02-01 14:23:10
【问题描述】:

我正在对 nodejs 进行 API 调用,如下所示>

        public TUpdation(data): Observable<any>{
          const headers = new HttpHeaders(); 
          headers.set('content-type', null);  
          headers.set('Accept', 'multipart/form-data');
          headers.set('Access-Control-Allow-Origin',"*");
          return this.http.post(API.UPDATION, data, { headers }); 
        }

在 node.js 部分,我试图在下面的函数中接收。

      exports.Updation = async (req,res,next) => {
          console.log("req.body : ",req.body); //Not getting the contents (empty)
          var classTM = req.body.checkbox2;
          var _entityclass;
           try{
             if(entityclass){
                _entityclass = "EE";
             }
            else if(entityclass){
                _entityclass = "TM";
             }
            else{
                _entityclass = "TMP";
             }
            try{
               console.log("req.body --- !!!  ",req.body); // Here Im able to get the contents
             }
            catch(e){
              }
           }
       catch(e){
       }
       }

我的问题是一开始我无法获取正文内容。无论我想做什么,都无法将 re.body 内容放在首位。在第二次尝试中,我能够获取。任何人都可以帮助我。我做错了什么?

【问题讨论】:

  • 从 Angular 端检查请求是否正确发送。
  • @ireshanpathirana 但我能够在第二个尝试块中获取 req.body 详细信息..
  • 你是否正确结束了第一次尝试捕获块?
  • @ireshanpathirana 是的,
  • Access-Control-Allow-Origin 是无效的请求标头。它用于来自服务器的响应标头。可以设置但是没有意义

标签: node.js angular angular5


【解决方案1】:

也许你可以试试下面的代码:

public TUpdation(data): Observable < any > {
    const headers = new HttpHeaders();
    // set content-type: `application/json`
    headers.set('content-type', 'application/json'); 
    // you can comment: multipart/form-data, if it's still does not work
    headers.set('Accept', 'multipart/form-data'); 
    headers.set('Access-Control-Allow-Origin', "*");
    // make sure your "data" is not an empty object
    // you can console.log(data); 
    return this.http.post(API.UPDATION, data, {
        headers
    });
}

使用上面的代码更改 Angular 应用中的代码后,现在,请确保您已在 express 应用中添加 body-parser

您可以使用以下代码设置您的body-parser

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

您可以复制上面的代码并输入您的app.jsserver.js

希望对你有帮助。

【讨论】:

  • 非常感谢。内容类型“应用程序/json”帮助了我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
相关资源
最近更新 更多