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
- PHP傳送POST和GET請求PHP
- SpringMVC(2)-Rest請求風格SpringMVCREST
- 前端傳送的請求,是如何請求到後端服務的?前端後端
- Postman傳送Post請求Postman
- Java傳送Post請求Java
- 傳送GET請求 示例
- HttpClient--傳送請求HTTPclient
- perl傳送http請求HTTP
- java傳送http請求JavaHTTP
- android客戶端向伺服器傳送請求中文亂碼的問Android客戶端伺服器
- 如何傳送請求以及AJAX
- C# 傳送POST請求C#
- 使用HttpClient傳送GET請求HTTPclient
- 使用httpclient傳送http請求HTTPclient
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- 部落格園登入請求分析
- Zttp 傳送 form params 請求 而非 JSON 請求ORMJSON
- cURL實現傳送Get和Post請求(PHP)PHP
- 使用 request 和 cheerio 庫來傳送 HTTP 請求HTTP
- 【轉】怎麼用PHP傳送HTTP請求(POST請求、GET請求)?PHPHTTP
- 使用Feign傳送HTTP請求HTTP
- python傳送HTTP POST請求PythonHTTP
- post 封裝Map 傳送請求封裝
- postman傳送請求使用篇(二)Postman
- Python傳送請求代tokenPython
- 用Fiddler 傳送post請求
- .net 後臺 傳送http請求HTTP
- 通過PowerShell傳送TCP請求TCP
- 使用C#傳送POST請求C#
- Postman傳送請求引數是Map格式的請求Postman
- java傳送post請求 ,請求資料放到body裡Java
- Go語言開發傳送Get和Post請求Go
- 傳送 options 請求 後端返回 405 的解決過程後端
- Vue 使用 Axios 傳送請求的請求體問題VueiOS
- linux用curl傳送post請求Linux
- 以Raw的方式傳送POST請求