Nodejs tham gia chuỗi

Trong bài này chúng ta sẽ tìm hiểu hàm join trong javascript, đây là hàm dùng để nối các phần tử của mảng lại với nhau thành một chuỗi

Nodejs tham gia chuỗi

Nodejs tham gia chuỗi

Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức.

Hàm tham gia sẽ nối các phần tử của mảng thành một chuỗi, các phần tử được ngăn cách nhau bởi ký tự do người dùng quy định. Nếu không truyền vào ngăn chặn tự động truyền thì giá trị mặc định là dấu phẩy ","

Nếu bạn chỉ đơn thuần muốn chuyển mảng thành chuỗi và ngăn cách bởi dấu phẩy thì hãy sử dụng mảng hàm. toString() nhé

1. Cú pháp hàm join trong javascript

Hàm tham gia có cú pháp như sau

Bài viết này đã được đăng tại [free tuts. mạng lưới]

array.join(separator)

in which

  • const server = http.createServer();
    server.on('request', (request, response) => {
      // the same kind of magic happens here!
    });
    
    5 là ký tự sẽ ngăn cách các phần tử với nhau, mặc định mang giá trị là dấu ","
  • Hàm sẽ trả về một chuỗi và mảng cũ không ảnh hưởng gì cả

Hàm này rất ít khi sử dụng, do thao tác chuyển đổi chuỗi thành chuỗi trong các ứng dụng thực tế rất mới

Ví dụ. Đây là bản demo mình lấy từ trang chủ của mozilla

var a = ['Wind', 'Water', 'Fire'];
a.join();      // 'Wind,Water,Fire'
a.join(', ');  // 'Wind, Water, Fire'
a.join(' + '); // 'Wind + Water + Fire'
a.join('');    // 'WindWaterFire'

2. Một ví dụ khác về hàm nối trong javascript

Hãy viết chương trình khi nhấp vào một nút, sau đó chuyển tất cả các phần tử của mảng chủ đề thành một chuỗi, sau đó vào màn hình

CHẠY

Học lập trình miễn phí tại freetuts.net

3. So sánh hàm nối với mảng. toString

Cả hai hàm đều là các phương thức của mảng đối tượng, và công cụ chuyển đổi mảng thành chuỗi. Tuy nhiên, họ sẽ có một chút khác biệt như sau

Mục đích của hướng dẫn này là truyền đạt sự hiểu biết vững chắc về quy trình của Node. xử lý HTTP js. Chúng tôi sẽ cho rằng bạn biết, theo nghĩa chung, cách thức hoạt động của các yêu cầu HTTP, bất kể ngôn ngữ hoặc môi trường lập trình. Chúng tôi cũng sẽ giả sử một chút quen thuộc với Node. js

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
7 và
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
8. Nếu bạn không hoàn toàn quen thuộc với chúng, bạn nên đọc nhanh tài liệu API cho từng tài liệu đó

Tạo máy chủ

Bất kỳ ứng dụng máy chủ web nút nào cũng sẽ phải tạo một đối tượng máy chủ web. Điều này được thực hiện bằng cách sử dụng

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
9

const http = require('http');

const server = http.createServer((request, response) => {
  // magic happens here!
});

Hàm được chuyển đến

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
9 được gọi một lần cho mọi yêu cầu HTTP được thực hiện đối với máy chủ đó, vì vậy, nó được gọi là trình xử lý yêu cầu. Trên thực tế, đối tượng
const { method, url } = request;
1 được trả về bởi
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
9 là một
const { method, url } = request;
3 và những gì chúng ta có ở đây chỉ là cách viết tắt để tạo một đối tượng
const { method, url } = request;
4 và sau đó thêm đối tượng nghe vào sau

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});

Khi một yêu cầu HTTP đến máy chủ, nút gọi chức năng xử lý yêu cầu với một vài đối tượng tiện dụng để xử lý giao dịch,

const { method, url } = request;
5 và
const { method, url } = request;
6. Chúng tôi sẽ đến với những người trong thời gian ngắn

Để thực sự phục vụ các yêu cầu, phương thức

const { method, url } = request;
7 cần được gọi trên đối tượng
const { method, url } = request;
4. Trong hầu hết các trường hợp, tất cả những gì bạn cần chuyển đến
const { method, url } = request;
7 là số cổng mà bạn muốn máy chủ lắng nghe. Ngoài ra còn có một số tùy chọn khác, vì vậy hãy tham khảo tài liệu tham khảo API

Phương thức, URL và Tiêu đề

Khi xử lý một yêu cầu, điều đầu tiên bạn có thể muốn làm là xem xét phương thức và URL để có thể thực hiện các hành động thích hợp. Nút. js làm cho điều này tương đối dễ dàng bằng cách đặt các thuộc tính tiện dụng vào đối tượng

const { method, url } = request;
5

________số 8

Đối tượng

const { method, url } = request;
5 là một thể hiện của

Học lập trình miễn phí tại freetuts.net

12

Học lập trình miễn phí tại freetuts.net

13 ở đây sẽ luôn là một phương thức/động từ HTTP bình thường.

Học lập trình miễn phí tại freetuts.net

14 là URL đầy đủ không có máy chủ, giao thức hoặc cổng. Đối với một URL điển hình, điều này có nghĩa là mọi thứ sau và bao gồm dấu gạch chéo thứ ba về phía trước

Tiêu đề cũng không xa. Họ đang ở trong đối tượng của riêng họ trên

const { method, url } = request;
5 được gọi là

Học lập trình miễn phí tại freetuts.net

16

Học lập trình miễn phí tại freetuts.net

1

Điều quan trọng cần lưu ý ở đây là tất cả các tiêu đề chỉ được thể hiện bằng chữ thường, bất kể khách hàng thực sự đã gửi chúng như thế nào. Điều này đơn giản hóa nhiệm vụ phân tích tiêu đề cho bất kỳ mục đích nào

Nếu một số tiêu đề được lặp lại, thì các giá trị của chúng sẽ bị ghi đè hoặc nối với nhau dưới dạng các chuỗi được phân tách bằng dấu phẩy, tùy thuộc vào tiêu đề. Trong một số trường hợp, điều này có thể gây rắc rối, vì vậy cũng có sẵn

Học lập trình miễn phí tại freetuts.net

17

Nội dung yêu cầu

Khi nhận được yêu cầu

Học lập trình miễn phí tại freetuts.net

18 hoặc

Học lập trình miễn phí tại freetuts.net

19, cơ quan yêu cầu có thể quan trọng đối với ứng dụng của bạn. Lấy dữ liệu cơ thể liên quan nhiều hơn một chút so với truy cập các tiêu đề yêu cầu. Đối tượng
const { method, url } = request;
5 được chuyển vào trình xử lý thực hiện giao diện
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
11. Luồng này có thể được nghe hoặc chuyển đến nơi khác giống như bất kỳ luồng nào khác. Chúng tôi có thể lấy dữ liệu ngay từ luồng bằng cách lắng nghe các sự kiện ________ 312 và ________ 313 của luồng

Đoạn phát ra trong mỗi sự kiện

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
12 là một
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
15. Nếu bạn biết đó sẽ là dữ liệu chuỗi, điều tốt nhất nên làm là thu thập dữ liệu trong một mảng, sau đó tại
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
13, nối và xâu chuỗi nó

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
1

Điều này có vẻ hơi tẻ nhạt, và trong nhiều trường hợp, nó là. May mắn thay, có các mô-đun như

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
17 và
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
18 trên
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
19 có thể giúp che đi một số logic này. Điều quan trọng là phải hiểu rõ về những gì đang diễn ra trước khi đi vào con đường đó, và đó là lý do tại sao bạn ở đây

Đôi nét về lỗi

Vì đối tượng

const { method, url } = request;
5 là một
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
11, nên nó cũng là một
const { method, url } = request;
3 và hoạt động như một đối tượng khi xảy ra lỗi

Lỗi trong luồng

const { method, url } = request;
5 xuất hiện bằng cách phát ra sự kiện
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
54 trên luồng. Nếu bạn không có bộ lắng nghe cho sự kiện đó, lỗi sẽ được đưa ra, điều này có thể làm hỏng Nút của bạn. chương trình js. Do đó, bạn nên thêm trình nghe
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
54 vào các luồng yêu cầu của mình, ngay cả khi bạn chỉ đăng nhập và tiếp tục theo cách của mình. (Mặc dù có lẽ tốt nhất là gửi một số loại phản hồi lỗi HTTP. Thêm về điều đó sau. )

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
5

Có nhiều cách khác để xử lý các lỗi này, chẳng hạn như các công cụ và công cụ trừu tượng khác, nhưng hãy luôn lưu ý rằng các lỗi có thể xảy ra và bạn sẽ phải xử lý chúng.

Những gì chúng ta đã có cho đến nay

Tại thời điểm này, chúng ta đã hoàn thành việc tạo một máy chủ và lấy phương thức, URL, tiêu đề và nội dung từ các yêu cầu. Khi chúng ta kết hợp tất cả lại với nhau, nó có thể trông giống như thế này

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
8

Nếu chúng tôi chạy ví dụ này, chúng tôi sẽ có thể nhận được yêu cầu, nhưng không trả lời chúng. Trên thực tế, nếu bạn nhấn ví dụ này trong trình duyệt web, yêu cầu của bạn sẽ hết thời gian vì không có gì được gửi lại cho khách hàng

Cho đến giờ chúng ta vẫn chưa chạm vào đối tượng

const { method, url } = request;
6, là một thể hiện của ________ 457, là một ________ 458. Nó chứa nhiều phương thức hữu ích để gửi dữ liệu trở lại máy khách. Chúng tôi sẽ đề cập đến điều đó tiếp theo

Mã trạng thái HTTP

Nếu bạn không cần thiết lập nó, mã trạng thái HTTP trên phản hồi sẽ luôn là 200. Tất nhiên, không phải mọi phản hồi HTTP đều đảm bảo điều này và đến một lúc nào đó, bạn chắc chắn sẽ muốn gửi một mã trạng thái khác. Để làm điều đó, bạn có thể đặt thuộc tính

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
59

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
3

Có một số lối tắt khác cho điều này, như chúng ta sẽ sớm thấy

Đặt tiêu đề phản hồi

Các tiêu đề được đặt thông qua một phương thức thuận tiện có tên là

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
80

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
5

Khi đặt tiêu đề trên phản hồi, trường hợp không nhạy cảm với tên của chúng. Nếu bạn đặt tiêu đề nhiều lần, giá trị cuối cùng bạn đặt là giá trị được gửi

Rõ ràng gửi dữ liệu tiêu đề

Các phương pháp đặt tiêu đề và mã trạng thái mà chúng ta đã thảo luận giả định rằng bạn đang sử dụng "tiêu đề ẩn". Điều này có nghĩa là bạn đang trông cậy vào nút gửi tiêu đề cho bạn vào đúng thời điểm trước khi bạn bắt đầu gửi dữ liệu nội dung

Nếu muốn, bạn có thể ghi tiêu đề vào luồng phản hồi một cách rõ ràng. Để làm điều này, có một phương thức gọi là

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
81, viết mã trạng thái và tiêu đề vào luồng

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
7

Khi bạn đã đặt tiêu đề (ngầm hoặc rõ ràng), bạn đã sẵn sàng để bắt đầu gửi dữ liệu phản hồi

Gửi nội dung phản hồi

Vì đối tượng

const { method, url } = request;
6 là một
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
58, nên việc viết nội dung phản hồi cho khách hàng chỉ là vấn đề sử dụng các phương thức truyền phát thông thường

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
0

Hàm

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
84 trên luồng cũng có thể nhận một số dữ liệu tùy chọn để gửi dưới dạng bit dữ liệu cuối cùng trên luồng, vì vậy chúng tôi có thể đơn giản hóa ví dụ trên như sau

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
1

Điều quan trọng là đặt trạng thái và tiêu đề trước khi bạn bắt đầu ghi các khối dữ liệu vào nội dung. Điều này có ý nghĩa, vì các tiêu đề xuất hiện trước phần thân trong các phản hồi HTTP

Một điều nhanh chóng khác về lỗi

Luồng

const { method, url } = request;
6 cũng có thể phát ra các sự kiện
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
54 và đến một lúc nào đó bạn cũng sẽ phải xử lý điều đó. Tất cả lời khuyên về lỗi phát trực tuyến
const { method, url } = request;
5 vẫn được áp dụng tại đây

Đặt nó tất cả cùng nhau

Bây giờ chúng ta đã học về cách tạo phản hồi HTTP, hãy kết hợp tất cả lại với nhau. Dựa trên ví dụ trước đó, chúng tôi sẽ tạo một máy chủ gửi lại tất cả dữ liệu mà người dùng đã gửi cho chúng tôi. Chúng tôi sẽ định dạng dữ liệu đó dưới dạng JSON bằng cách sử dụng

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
88

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
2

Ví dụ máy chủ Echo

Hãy đơn giản hóa ví dụ trước để tạo một máy chủ echo đơn giản, chỉ gửi bất kỳ dữ liệu nào nhận được trong yêu cầu ngay trong phản hồi. Tất cả những gì chúng ta cần làm là lấy dữ liệu từ luồng yêu cầu và ghi dữ liệu đó vào luồng phản hồi, tương tự như những gì chúng ta đã làm trước đây

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
3

Bây giờ hãy tinh chỉnh cái này. Chúng tôi chỉ muốn gửi một tiếng vang trong các điều kiện sau

  • Phương thức yêu cầu là POST
  • URL là
    const server = http.createServer();
    server.on('request', (request, response) => {
      // the same kind of magic happens here!
    });
    
    89

Trong bất kỳ trường hợp nào khác, chúng tôi chỉ muốn trả lời bằng 404

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
4

Bằng cách kiểm tra URL theo cách này, chúng tôi đang thực hiện một hình thức "định tuyến". Các hình thức định tuyến khác có thể đơn giản như câu lệnh

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
30 hoặc phức tạp như toàn bộ khung như
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
31. Nếu bạn đang tìm kiếm thứ gì đó định tuyến và không có gì khác, hãy thử
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
32

Tuyệt quá. Bây giờ chúng ta hãy cố gắng đơn giản hóa điều này. Hãy nhớ rằng, đối tượng

const { method, url } = request;
5 là một
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
11 và đối tượng
const { method, url } = request;
6 là một
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
58. Điều đó có nghĩa là chúng ta có thể sử dụng
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
37 để chuyển dữ liệu từ cái này sang cái khác. Đó chính xác là những gì chúng tôi muốn cho một máy chủ tiếng vang

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
5

suối Yay

Mặc dù vậy, chúng tôi vẫn chưa hoàn thành. Như đã đề cập nhiều lần trong hướng dẫn này, lỗi có thể xảy ra và chúng ta cần xử lý chúng

Để xử lý lỗi trên luồng yêu cầu, chúng tôi sẽ ghi lỗi vào

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
38 và gửi mã trạng thái 400 để biểu thị
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
39. Tuy nhiên, trong một ứng dụng trong thế giới thực, chúng tôi muốn kiểm tra lỗi để tìm ra mã trạng thái và thông báo chính xác sẽ là gì. Như thường lệ với lỗi, bạn nên tham khảo tài liệu
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
50

Về phản hồi, chúng tôi sẽ chỉ ghi lỗi vào

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
38

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
6

Bây giờ chúng tôi đã đề cập đến hầu hết các khái niệm cơ bản về xử lý các yêu cầu HTTP. Tại thời điểm này, bạn sẽ có thể

  • Khởi tạo một máy chủ HTTP với chức năng xử lý yêu cầu và yêu cầu nó lắng nghe trên một cổng
  • Nhận tiêu đề, URL, phương thức và dữ liệu nội dung từ các đối tượng
    const { method, url } = request;
    
    5
  • Đưa ra quyết định định tuyến dựa trên URL và/hoặc dữ liệu khác trong đối tượng
    const { method, url } = request;
    
    5
  • Gửi tiêu đề, mã trạng thái HTTP và dữ liệu nội dung qua đối tượng
    const { method, url } = request;
    
    6
  • Dữ liệu đường ống từ đối tượng
    const { method, url } = request;
    
    5 và đối tượng
    const { method, url } = request;
    
    6
  • Xử lý lỗi luồng trong cả luồng
    const { method, url } = request;
    
    5 và
    const { method, url } = request;
    
    6

Từ những điều cơ bản này, Node. máy chủ HTTP js cho nhiều trường hợp sử dụng điển hình có thể được xây dựng. Có rất nhiều thứ khác mà các API này cung cấp, vì vậy hãy nhớ đọc qua các tài liệu API cho

const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
7,
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
8 và
const server = http.createServer();
server.on('request', (request, response) => {
  // the same kind of magic happens here!
});
71