从 Angular 向 Node js API 发出 HTTP 请求的正确方法是什么?

What is the correct way to make a HTTP request from Angular to Node js API?

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

        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 内容置于顶部。在第二次尝试中,我能够获取。谁能帮帮我。我做错了什么?

或许您可以尝试使用以下代码:

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

希望对您有所帮助