2017-10-19 29 views
0

HTTP POSTが応答しなくなりました。私は開発者ツールでは何の反応も見ません。コードで何が間違っていますか。助けてください。 APIからの応答を取得し、新しいレコードをリストに追加する方法。Node.js Anglular 2 HTTPポストで動作しないSQLliteを使用するRestfull API

強いテキスト // MY REST APIコード: //あなたはどのルートを定義する前にこれらのステートメントを置きます。

var express = require('express'); 
var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('app_data/SocBillSys.db'); 
var bodyParser = require('body-parser'); 

var app=express(); 

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

//これにより、任意のドメインアクセスAPIサーバーを許可します。

function allowCrossDomain(req, res, next){ 
     res.setHeader('Access-Control-Allow-Origin', '*'); 
     res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, 
    PUT, PATCH, DELETE'); // If needed 
     res.setHeader('Access-Control-Allow-Headers', 'X-Requested-  With,contenttype'); // If needed 
     res.setHeader('Access-Control-Allow-Credentials', true); // If needed 
     next(); 
} 

// INSERT RECORD

app.post('/db/society', function(req,res) 
{ 

    db.run("INSERT INTO society (name, type, address, city, state, pincode) VALUES (?,?,?,?,?,?)", 
     [ req.body.name, 
     req.body.type, 
     req.body.address, 
     req.body.city, 
     req.body.state, 
     req.body.pincode ] 
    , 
    function(error,response) 
    { 
     if (error == null) 
      res.status(202).json({"id": this.lastID}); 

     else 
     res.status(500).send(error.message); 
    }); 

}); 

app.listen(3000, function() { 
    console.log('NODE.JS WEB API SERVER is listening at port 3000...'); 
}); 

アンギュラサービスのHTTPのCALL

import { Injectable } from '@angular/core'; 
import { Http, Response, Headers, RequestOptions } from '@angular/http'; 
import { ISociety } from '../Society/Society'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 

@Injectable() 
export class SocietyService { 

    constructor(private _http: Http){} 

createSociety(society: ISociety): void{ 
     let headers = new Headers({'Content-Type': 'application/json' }); 
     let options = new RequestOptions({headers: headers}); 
     this._http.post('http://localhost:3000/db/society', JSON.stringify(society), options) 
      .map(this.handleResponse) 
      .catch(this.handleError);   
    } 



private handleResponse(res: Response) { 
     let body = res.json();  
     return body; 
     } 

    private handleError (error: Response | any) { 
     console.error(error.message || error); 
     return Observable.throw(error.message || error); 
     } 


} 

答えて

1
function allowCrossDomain(req, res, next){ 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, 
PUT, PATCH, DELETE'); // If needed 
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type'); // If needed 
    res.setHeader('Access-Control-Allow-Credentials', true); // If needed 
    next(); 

}

+0

私はあなたのコードと私のコード他の間に違いが表示されません「X-Requested-With、Content-Type」よりも問題はありません。それは私のコピーペーストの問題でした。 –

+0

あなたのソリューションに感謝Ayush。私はまずあなたが訂正したものを理解できませんでしたが、後でそれを得ました。私はあなたの助けに感謝します –

関連する問題