Đăng api nodejs
Hãy tưởng tượng rằng bạn đang xây dựng một RESTful API NodeJS để tạo, cập nhật, gọi thông tin hoặc xóa người dùng. Với các tính năng đó HTTP đã cung cấp một bộ đầy đủ các phương thức. 7, 8, 9, 0 và 1 Show
Cách tối ưu nhất là các tuyến API của bạn nên chỉ sử dụng danh từ như các định danh tài nguyên. Các tuyến đường khi đó sẽ giống như thế này
Vui lòng tham khảo tại đây Hướng dẫn sử dụng JavaScript để lấy dữ liệu tìm nạp API từ ngân hàng Vương quốc Anh Sử dụng đúng mã trạng thái HTTPNếu có điều gì xảy ra khi máy chủ đang xử lý một yêu cầu, bạn cần thiết lập đúng mã trạng thái trong phản hồi được trả về
Nếu bạn sử dụng Express, việc thiết lập mã trạng thái khá dễ dàng. 0Bạn có thể xem danh sách đầy đủ các mã trạng thái ở đây Use HTTP header to send metadataĐể đính kèm các siêu dữ liệu vào tải trọng bạn sắp gửi, hãy sử dụng tiêu đề HTTP. Các tiêu đề sẽ bao gồm các thông tin
This is an danh sách các tiêu đề HTTP đã được chuẩn hóa Nếu bạn cần thiết lập bất kỳ tùy chỉnh siêu dữ liệu nào trong tiêu đề, vui lòng thêm tiền tố 10 về phía trước. Ví dụ, nếu bạn đang sử dụng mã thông báo CSRF, cách thông thường (nhưng không chuẩn) là đặt tên kiểu 11. Tuy nhiên, theo RFC 6648 thì sẽ gây khó hiểu. Với các API mới không nên sử dụng các tiêu đề tên dễ gây xung đột với các ứng dụng khác. Ví dụ, OpenStack sẽ tự động thêm tiền tố vào tiêu đề với 12
Chú ý rằng các tiêu chuẩn HTTP không xác định được bất kỳ giới hạn kích thước nào trong tiêu đề. Tuy nhiên, NodeJS (từ lúc viết bài này) đã buộc tiêu đề đối tượng nhận một giới hạn kích thước là 80kB cho lý do thực tế
Select true framework for REST API NodeJSLựa chọn đúng khuôn khổ phù hợp với yêu cầu công việc của bạn là tối quan trọng. Sau đây là một số gợi ý Express, Koa hay Hapi NodeJSExpress, Koa hay Hapi có thể được sử dụng để tạo ra các ứng dụng nền web, chúng hỗ trợ tạo khuôn mẫu và kết xuất. Nếu ứng dụng của bạn cần cung cấp dịch vụ cho người dùng, hãy thử sử dụng một số trong chúng và tận hưởng thành quả phục hồiỞ một khía cạnh khác, Restify file trung hoàn toàn vào việc giúp bạn xây dựng các dịch vụ REST NodeJS. Khôi phục tồn tại để giúp bạn xây dựng các dịch vụ API “chuẩn” đáng kể, dễ bảo trì. Restify cũng đi kèm với công cụ hỗ trợ tự động DTrace Về mức độ phủ sóng thì Restify đang được sử dụng trong rất nhiều ứng dụng, điển hình như npm hay Netflix Kiểm tra hộp đen REST APIMột trong những cách hay nhất để kiểm tra API REST là xem chúng như hộp đen Black-box test là phương pháp kiểm tra chức năng của ứng dụng mà không cần quan tâm đến cấu trúc bên trong của nó hay cách nó hoạt động. Làm điều đó, sẽ không cần giả định bất kỳ sự phụ thuộc nào, hệ thống sẽ được kiểm tra như một thể duy nhất Để giúp bạn kiểm tra API REST theo phương pháp hộp đen này, ta sẽ sử dụng mô-đun supertest Sau đây là một trường hợp thử nghiệm đơn giản. Nó kiểm tra xem thông tin người dùng đã được trả về hay chưa, sử dụng thử nghiệm mocha 1Có thể bạn sẽ thắc mắc. làm thế nào để biến dữ liệu vào trong cơ sở dữ liệu phục vụ cho các REST API NodeJS?Thông thường, kiểm tra thường được viết làm sao để chúng tôi tạo ra càng ít giả định cho trang thái hệ thống càng tốt. Tuy nhiên, trong một vài bối cảnh bạn cần biết trạng thái chính xác của hệ thống, bạn có thể tạo các xác nhận và đạt được mức độ kiểm tra cao hơn Tùy thuộc vào nhu cầu của bạn, bạn có thể phổ biến cơ sở dữ liệu với các bài kiểm tra dữ liệu theo một trong các cách sau
Dĩ nhiên, kiểm tra hộp đen không đồng nghĩa với việc bạn không cần viết bài kiểm tra đơn vị. Trong hầu hết các trường hợp, bạn vẫn cần viết bài kiểm tra đơn vị cho các API Tham khảo bài viết. Unit test là gì – Jest test Javascript cho người mới bắt đầu JWT – Xác thực trạng thái phiAPI must là phi trạng thái, do vậy xác nhận cũng tương tự. JWT (Json Web Token) chính là ý tưởng. JWT bao gồm 3 phần
Thêm xác thực loại JWT vào ứng dụng khá đơn giản và nhanh chóng 7Sau khi thêm vào, API NodeJS điểm cuối đã được bảo vệ bởi JWT. Để truy cập vào các điểm cuối đã được bảo vệ, bạn cần phải cung cấp mã thông báo trong trường tiêu đề 14 9Xin lưu ý một điều rằng mô-đun JWT không phụ thuộc vào bất kỳ cơ sở dữ liệu lớp nào, tất cả mã thông báo JWT đều có cơ chế xác thực tự động và chúng tôi vẫn bao gồm cả giá trị thời gian sống Ngoài ra, bạn phải luôn đảm bảo rằng tất cả các điểm cuối API trong ứng dụng sẽ chỉ được truy cập thông qua kết nối bảo mật sử dụng HTTPS Sử dụng các yêu cầu có điều kiệnCác yêu cầu có điều kiện là các yêu cầu HTTP được thực thi theo các cách khác nhau, phụ thuộc vào tiêu đề HTTP cụ thể. bạn có thể xem các tiêu đề này như một điều kiện quyết định. if they met nhau, các yêu cầu sẽ được thực hiện theo các cách khác nhau Các tiêu đề này sẽ cố gắng kiểm tra xem liệu phiên bản tài nguyên được lưu trữ trên máy chủ có trùng với phiên bản của cùng một tài nguyên hay không. Vì lý do này, các tiêu đề có thể là
We main are
Vui lòng xem qua ví dụ dưới đây để hiểu thêm Ở hình dưới đây, khách hàng đã không có bất kỳ phiên bản cũ nào của tài nguyên 71. Do đó cả 2 tiêu đề 17 hướng 19 đều không được sử dụng khi tài nguyên được gửi đi. Sau đó, máy chủ phản hồi với các tiêu đề 16 và 15 được thiết lập đúngYêu cầu từ tài liệu có điều kiện MDNMáy khách có thể thiết lập tiêu đề 17 và 19 một lần khi nó cố gửi yêu cầu với cùng tài nguyên. Nếu phản hồi trả về giống nhau, máy chủ chỉ đơn giản là phản hồi lại với mã trạng thái 78 và không gửi lại tài nguyên nữaYêu cầu từ tài liệu có điều kiện MDNYêu cầu giới hạn số lượng – giới hạn tốc độGiới hạn tỷ lệ được sử dụng để điều khiển việc người dùng có thể gửi đến API bao nhiêu yêu cầu Để nói với API có bao nhiêu yêu cầu đã được gửi đi, trong tiêu đề hãy thiết lập như sau
Hỗ trợ phần lớn HTTP framework bằng các công cụ bên ngoài hoặc là các plugin. Ví dụ, nếu bạn sử dụng Koa, hãy thử gói koa-ratelimit Chú ý rằng cửa sổ thời gian có thể thay đổi tùy chọn vào các nhà cung cấp API khác nhau – ví dụ như Github là 1 giờ, trong khi Twitter là 15 phút Tạo tài liệu API NodeJS đúng chuẩnCác API được viết ra để mọi người có thể sử dụng chúng, hưởng lợi từ chúng. Do đó việc cung cấp các tài liệu đi kèm với API REST là điều kiện tối thiểu cần thiết Các dự án mã nguồn mở sau đây có thể giúp bạn tạo ra các tài liệu cho API
Nếu bạn muốn sử dụng sản phẩm đã lưu trữ, bạn có thể sử dụng Apiary Đừng quên tương lai sáng lạn của API NodeJSTrong vài năm vừa qua, hai ngôn ngữ truy vấn lớn cho các API đã mọc lên. GraphQL của Facebook và Falcor của Netflix. Tại sao ta lại cần họ đến thế nào? Tưởng tượng yêu cầu tài nguyên RESTful NodeJS as after /org/1/space/2/docs/1/collaborators?include=email&page=1&limit=10 Yêu cầu này có thể trở nên thông qua tầm nhìn kiểm tra giám sát của họ khá dễ dàng – trong trường hợp bạn muốn lấy phản hồi cùng định dạng cho tất cả các mô hình vào mọi thời điểm. Lúc này thì GraphQL và Falcor sẽ giúp bạn GraphQL “Là một ngôn ngữ truy vấn cho các API NodeJS và là một thời gian chạy để hoàn thành các truy vấn đó. GraphQL cung cấp một mô tả hoàn chỉnh và dễ hiểu về dữ liệu trong các API, cho phép khách hàng mạnh mẽ yêu cầu khách hàng chính xác cần thiết, và khách hàng thứ chỉ cần, không hơn. GraphQL khá dễ dàng để phát triển các API theo thời gian, kích hoạt các công cụ phát triển mạnh mẽ. Xem thêm tại đây. ” chim ưng “Falcor là nền tảng dữ liệu tiên tiến giúp tối ưu sức mạnh cho giao diện người dùng Netflix. Nó cho phép bạn lập mô hình back-end tất cả dữ liệu như một đối tượng JSON ảo độc lập trên máy chủ NodeJS. Ở phía client, bạn sẽ làm việc với đối tượng JSON từ xa, sử dụng các thuật toán Javascript quen thuộc như get, set và call. Nếu bạn hiểu dữ liệu, bạn đã hiểu các API. Xem thêm tại đây. ” |