expressjs路由和Nodejs伺服器端傳送REST請求 - - ITeye部落格
Nodejs建立自己的server後,我們如果需要從客戶端利用ajax呼叫別的伺服器端的資料API的介面,這時候出現了ajax跨域問題。
一種是利用在客戶端解決跨域問題
這種方案大家可以去網上查查
另一種方案是在伺服器端去請求別的伺服器,然後將資料再返回客戶端.這裡就涉及到了:
ajax請求,expressjs接收請求,Nodejs傳送REST請求。
我著重寫寫關於這個方案的解決方法:
首先利用express建立路由,接收客戶端傳送的不同請求。
express路由可以接收get請求和post請求。
get請求可以去看API,因為平時我們可能對JSON的處理較多,所以用到POST請求較多,我這裡主要寫寫post請求。
客戶端傳送請求:
客戶端程式碼:
Java程式碼
- $.ajax({
- type: 'POST',
- contentType: 'application/json',
- url: '/internaltool/project/peoples',
- data: null,
- async: false,
- dataType: 'json',
- success:function (data){
- result = data;
- },
- error: function () {
- alert("Save error!");
- }
- });
- $.ajax({
- type: 'POST',
- contentType: 'application/json',
- url: '/internaltool/project/peopleInfoById',
- data: '{"id": "811435467"}',
- async: false,
- dataType: 'json',
- success:function (data){
- },
- error: function () {
- alert("Save error!");
- }
- });
Nodejs接收客戶端傳送的請求,並且Nodejs伺服器端傳送REST請求別的伺服器端取得資料。
Nodejs伺服器端的程式碼:
Java程式碼
- var express = require('express'),
- sr = require('./static_require'),
- app = express.createServer();
- // linql 2012/08/13 Add
- app.configure(function(){
- app.use(express.methodOverride());
- app.use(express.bodyParser());
- app.use(app.router);
- });
- // End
- var http = require('http');
- exports.init = function(here) {
- app.get('/*.js', sr.getHandler({
- searchPaths: [here]
- }));
- app.get('/*', function(req, res) {
- res.sendfile(req.param(0))
- });
- // linql 2012/08/13 Add
- // 這種情況是普通請求,不帶有json資料處理
- app.post('/internaltool/project/peoples', function(req, res) {
- // the post options
- var optionspost = {
- host : '192.168.1.1',
- port : '8080',
- path : '/managesystem/Project/personList',
- method : 'POST'
- };
- // do the POST call
- // 伺服器端傳送REST請求
- var reqPost = http.request(optionspost, function(resPost) {
- resPost.on('data', function(d) {
- res.send(d);
- });
- });
- reqPost.end();
- reqPost.on('error', function(e) {
- console.error(e);
- });
- });
- app.post('/internaltool/project/peopleInfoById', function(req, res) {
- // Request of JSON data
- // 接收客戶端的JSON資料
- var reqJosnData = JSON.stringify(req.body);
- // do a POST request
- // prepare the header
- var postheaders = {
- 'Content-Type' : 'application/json; charset=UTF-8',
- 'Content-Length' : Buffer.byteLength(reqJosnData, 'utf8')
- };
- // the post options
- var optionspost = {
- host : '192.168.1.1',
- port : '8080',
- path : '/managesystem/Project/personMessageById',
- method : 'POST',
- headers : postheaders
- };
- // do the POST call
- var reqPost = http.request(optionspost, function(resPost) {
- resPost.on('data', function(d) {
- res.send(d);
- });
- });
- // write the json data
- // 傳送REST請求時傳入JSON資料
- reqPost.write(reqJosnData);
- reqPost.end();
- reqPost.on('error', function(e) {
- console.error(e);
- });
- });
- // End
- };
關於expres.js可以參照:
http://www.csser.com/board/4f77e6f996ca600f78000936
Nodejs傳送REST請求可以參照:
http://isolasoftware.it/2012/05/28/call-rest-api-with-node-js/
相關文章
- nodejs使用request傳送http請求NodeJSHTTP
- java傳送GET和post請求Java
- SpringMVC(2)-Rest請求風格SpringMVCREST
- 前端傳送的請求,是如何請求到後端服務的?前端後端
- Postman傳送Post請求Postman
- java傳送http請求JavaHTTP
- Java傳送Post請求Java
- 傳送GET請求 示例
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- 如何傳送請求以及AJAX
- python傳送HTTP POST請求PythonHTTP
- 使用Feign傳送HTTP請求HTTP
- cURL實現傳送Get和Post請求(PHP)PHP
- 使用 request 和 cheerio 庫來傳送 HTTP 請求HTTP
- Vue 使用 Axios 傳送請求的請求體問題VueiOS
- Postman傳送請求引數是Map格式的請求Postman
- Vue中封裝axios傳送請求Vue封裝iOS
- linux用curl傳送post請求Linux
- Python爬蟲(二)——傳送請求Python爬蟲
- 傳送 options 請求 後端返回 405 的解決過程後端
- vue中使用axios傳送ajax請求VueiOS
- react-fetch資料傳送請求React
- 首頁 使用axios 傳送ajax請求iOS
- 使用requests庫來傳送HTTP請求HTTP
- httprequest- post- get -傳送請求HTTP
- 使用Postman傳送POST請求的指南Postman
- java傳送get請求帶引數Java
- shell指令碼:批次傳送curl請求指令碼
- file_get_contents傳送post請求
- 以Raw的方式傳送POST請求
- jQuery裡如何使用ajax傳送請求jQuery
- Vue中通過Axios向SpringBoot傳送get和post請求VueiOSSpring Boot
- 在沒有curl和wget情況下傳送HTTP請求wgetHTTP
- Golang:使用go-resty/resty傳送http請求get和postGolangRESTHTTP
- 為何要在componentDidMount裡面傳送請求?
- postman(二):使用postman傳送get or post請求Postman
- 什麼時候會傳送options請求
- Go HTTP GET 請求可以傳送 body 嗎GoHTTP