Неверный Json в теле на отдыхе Api - PullRequest
0 голосов
/ 27 января 2019

Я создаю приложение CRUD с Angular, используя Rest Api и Mongo DB.В моем приложении я отправляю объект Post в остальные интерфейсы Apis, но в запросе указан недействительный Json:

{
 '{"_id":"","user":"Maius_XX","content":"asdasfd","lits":13,"shits":2,"comments":{},"timestamp":"Sun Jan 27 2019 21:07:11 GMT 0100 (Mitteleuropäische Normalzeit)"}': ''
}

Я пытался проанализировать тело или отправить другую информацию, но Json по-прежнему недействителен.

Мой угловой код:

createNewPosts(post: Post) {
    const httpOptions = {
    headers: new HttpHeaders({
        'Content-Type':  'application/x-www-form-urlencoded; charset=UTF-8'
    })
};

this._http.post<Post>(this.urlPosts, post, httpOptions)
    .subscribe(
        res => {
            console.log(res);
        },
        err => {
            console.log("Error occured " + err );
        }
    );

Мой бэкэнд:

router.post('/', (req, res, next) => {    

const product = new Product({
    _id: new mongoose.Types.ObjectId(),
    user: req.body.user,
    content: req.body.content,
    lits: req.body.lits,
    shits: req.body.shits,
    comments: req.body.comments,
    timestamp: req.body.timestamp
});
console.log(req.body);
product.save().then(result => {
        console.log(result);
        res.status(201).json({
            message: "Handling Post",
            createdProduct: result
        })
    })
    .catch(err => {
        console.log(err);
        res.status(500).json({
            error: err
        });
    });
});  

и:

app.use(morgan('dev')); 
app.use(bodyParser.json());

app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Alllow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
    if (req.method === 'OPTIONS') {
        res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
        return res.status(200).json({});
    }
    next();
});

app.use('/products', productRoutes);

app.use((req, res, next) => {
    const error = new Error('Not found');
    error.status = 404;
    next(error);
})

app.use((error, req, res, next) => {
    res.status(error.status || 500);
    res.json({
        error: {
            message: error.message
        }
    })
})

1 Ответ

0 голосов
/ 27 января 2019

Изменить Тип контента с:

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'

На:

'Content-Type': 'application/json; charset=UTF-8'
...