【问题标题】:Ionic/Angular change Data in Node Server节点服务器中的离子/角度变化数据
【发布时间】:2020-03-10 13:49:29
【问题描述】:

我创建了一个使用 Twit(twitter api) 的 Node 应用程序,以允许我的 ionic/Angular 应用程序在 twitter 上发布推文,但是我遇到的这个问题是我在设置 REST 时收到 404 错误消息方法来发布,它似乎与 GET 方法一起使用。

但我不知道如何从 Ionic 应用程序动态更改节点应用程序中的数据。

我想更改用户信息和正在发送的消息,但我不知道从哪里开始。如果有人能指导我,那将不胜感激。

这是我的 Node server.js 文件

const express = require('express');
const Twitter = require('twit');

const app = express();
const client = new Twitter({
  consumer_key:         '...',
  consumer_secret:      '...',
  access_token:         '...',
  access_token_secret:  '...',
});


app.use(require('cors')());
app.use(require('body-parser').json());

app.post('/post_tweet', (req, res) => {

  tweet = {status:"Random"};

    client
      .post(`statuses/update`, tweet)
      .then(timeline => {
        console.log(timeline);

        res.send(timeline);
      })

     .catch(error => {
      res.send(error);
    });


});

app.listen(3000, () => console.log('Server running'));

这是我在 Ionic 应用程序中的 twitter 服务

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';
@Injectable({
  providedIn: 'root'
})
export class TwitterserviceService {
  api_url = 'http://localhost:3000';

  constructor(private http: HttpClient) { } 

  tweet(tweetdata: string) {
    return this.http.get<any>(`${this.api_url}/post_tweet`)
        .pipe(map(tweet => {

            alert("tweet posted")

            return tweet;
        }));
}
}

这是我用来发送帖子的方法,但是消息“这有效”并没有发布,而是节点应用程序中的默认消息是“随机”发送的



sendTweet() {    
  this.api.tweet('this works')
            .pipe(first())
            .subscribe(
                data => {
                    console.log('yes')
                },
                error => {
                  'failed'
                });
}

【问题讨论】:

    标签: node.js angular rest ionic-framework twitter


    【解决方案1】:

    您的服务应该执行 POST,而不是 GET。而且 POST 必须有正文。

    tweet(tweetdata: string) {
        return this.http.post<any>(`${this.api_url}/post_tweet`, { tweetdata })
    }
    

    请注意,您必须在快速路由中处理此主体,并且可能使用此 tweetdata 属性做一些事情。

    【讨论】:

    • 这就是我所做的,但是当我这样做时,我得到一个 404 错误代码。但是,当我执行 get 方法时,我得到一个 200 代码,我需要在我的节点 js 代码中更改什么吗?
    【解决方案2】:

    好的,我找到了答案,其实很简单 这里是我正在使用的资源的链接 => https://code.tutsplus.com/tutorials/connect-to-the-twitter-api-in-an-angular-6-app--cms-32315

    这是我的节点 js 代码

    const express = require('express');
    const Twitter = require('twit');
    
    const app = express();
    const client = new Twitter({
      consumer_key:         '...',
      consumer_secret:      '...',
      access_token:         '...',
      access_token_secret:  '...',
    });
    
    
    app.use(require('cors')());
    app.use(require('body-parser').json());
    
    app.post('/post_tweet', (req, res) => {
    
      tweet = req.body;
    
      client
        .post(`statuses/update`, tweet)
        .then(tweeting => {
          console.log(tweeting);
    
          res.send(tweeting);
        })
    
       .catch(error => {
        res.send(error);
      });
    
    
    });
    
    app.listen(3000, () => console.log('Server running'));
    

    这里是我在 Ionic/Angular 项目中的代码

    api_url = 'http://localhost:3000';
    
      tweet(tweetdata: string) {
        return this.http.post<any>(`${this.api_url}/post_tweet/`, {status: tweetdata})
            .pipe(map(tweet => {
    
                alert("tweet posted")
    
                return tweet;
            }));
    }
    sendTweet() {  
      this.tweet('This is app code')
                .pipe(first())
                .subscribe(
                    data => {
                        console.log('yes')
                    },
                    error => {
                      'failed'
                    });
    }
    

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多