Я создал приложение Node, которое использует Twit (твиттер-интерфейс API), чтобы разрешить моему ионному / угловому приложению публиковать твит в твиттере, однако проблема, с которой я сталкиваюсь, заключается в том, что я получаю сообщение об ошибке 404, когда я устанавливаю метод REST для публикации , похоже, работает с методом GET.

Однако я не знаю, как я могу динамически изменять данные в моем приложении узла из моего ионного приложения.

Я хочу изменить информацию о пользователе и отправляемое сообщение, но я не знаю, с чего начать. если кто-нибудь может направить меня, это будет признательно.

Это мой файл 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

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;
        }));
}
}

И это метод, который я использую, чтобы отправить сообщение, однако сообщение «это работает» до сих пор сообщение вместо сообщения по умолчанию в приложении Node отправляется «случайно»



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

0
Mitch 14 Ноя 2019 в 17:49

2 ответа

Лучший ответ

Ваш сервис должен делать POST, а не GET. И ПОЧТА должна иметь тело.

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

Обратите внимание, что вам придется обрабатывать это тело в экспресс-маршруте и, вероятно, что-то делать с этим атрибутом tweetdata .

0
Christian Benseler 14 Ноя 2019 в 18:00