Cách tạo các yêu cầu HTTP bên ngoài với Node.js [đã đóng]


84

Câu hỏi khá đơn giản. Tôi muốn sử dụng máy chủ Node.js làm proxy để ghi nhật ký, xác thực và chuyển tiếp các truy vấn HTTP đến máy chủ HTTP phụ trợ (yêu cầu PUT, GET và DELETE).

Tôi nên sử dụng thư viện nào cho mục đích đó? Tôi sợ rằng tôi không thể tìm thấy một.

Câu trả lời:


136

NodeJS hỗ trợ http.request như một mô-đun tiêu chuẩn: http://nodejs.org/docs/v0.4.11/api/http.html#http.request

var http = require('http');

var options = {
  host: 'example.com',
  port: 80,
  path: '/foo.html'
};

http.get(options, function(resp){
  resp.on('data', function(chunk){
    //do something with chunk
  });
}).on("error", function(e){
  console.log("Got error: " + e.message);
});

10
Tôi khuyên bạn nên thêm resp.setEncoding('utf8');(hoặc bất kỳ mã hóa nào bạn đang sử dụng) để lấy dữ liệu dưới dạng chuỗi utf8. Nếu tôi hiểu đúng, nếu không bạn sẽ nhận được các đối tượng Buffer và có thể gặp sự cố với các ký tự nhiều byte nếu một ký tự nhiều byte được chia thành hai phần. (Chỉ cần gỡ lỗi một vấn đề liên quan trong một thời gian)
Touko

8
Tôi thực sự đã bắt đầu sử dụng requestmô-đun npm nhiều hơn nữa.
chovy

7

Tôi sẽ kết hợp node-http-proxyexpress .

node-http-proxy sẽ hỗ trợ một proxy bên trong máy chủ web node.js của bạn thông qua RoutingProxy(xem ví dụ được gọi là Yêu cầu proxy trong một máy chủ http khác ).

Bên trong logic máy chủ tùy chỉnh của bạn, bạn có thể thực hiện xác thực bằng express. Xem ví dụ về mẫu auth tại đây .

Kết hợp hai ví dụ đó sẽ cho bạn những gì bạn muốn.


5

Bạn có thể sử dụng httpmô-đun tích hợp để thực hiện http.request().

Tuy nhiên, nếu bạn muốn đơn giản hóa API, bạn có thể sử dụng một mô-đun như superagent


3
Thực sự rất tỉnh táo. Tôi không đổ lỗi cho việc nút chỉ cung cấp API cấp thấp nhưng việc bắt đầu xử lý các khối dữ liệu thật khó chịu.
Laurent Bourgault-Roy

1

node-http-proxy là một giải pháp tuyệt vời như đã được đề xuất bởi @hross ở trên. Nếu bạn không gặp khó khăn khi sử dụng nút, chúng tôi sử dụng NGINX để làm điều tương tự. Nó hoạt động thực sự tốt với nút. Ví dụ, chúng tôi sử dụng nó để xử lý các yêu cầu SSL trước khi chuyển tiếp chúng đến nút. Nó cũng có thể xử lý các tuyến đường chuyển tiếp và lưu trong bộ nhớ cache. Yay!


0

Bạn có thể sử dụng mô-đun http node.js để làm điều đó. Bạn có thể kiểm tra tài liệu tại Node.js HTTP .

Bạn cũng cần phải chuyển chuỗi truy vấn tới Máy chủ HTTP khác. Bạn nên có điều đó trong ServerRequest.url .

Khi bạn có những thông tin đó, bạn có thể chuyển vào Máy chủ HTTP phụ trợ và chuyển vào các tùy chọn mà bạn sẽ cung cấp trong http.request()

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.