Call api là gì

Hiện nguyên lý REST và cấu trúc dữ liệu RESTful được biết đến rất rộng rãi trong giới lập trình, những vẫn có nhiều người hay nhầm lẫn. Bản thân REST không phải là một loại công nghệ, mà là phương thức tạo AIP với nguyên lý tổ chức nhất định. Những nguyên lý này nhằm hướng dẫn lập trình viên tạo môi trường xử lý API request được toàn diện hơn.

Trong bài viết này, tôi sẽ giải thích một số phương thức lập trình RESTful ở góc nhìn toàn cảnh nhất, đồng thời làm rõ khái niệm REST APIs. Tôi sẽ tập trung vào câu hỏi “lập trình cái gì” hơn là “lập trình như thế nào”.

 

REST For Web Developers

REST là viết tắt của Representational State Transfer. Giải thích đơn giản, REST là một loạt hướng dẫn và dạng cấu trúc dùng cho việc chuyển đổi dữ liệu. Thông thường, REST hay được dùng cho ứng dụng web, nhưng cũng có thể làm việc được với dữ liệu phần mềm.

API là viết tắt của Application Programming Interface, phương thức kết nối với các thư viện và ứng dụng khác. Windows có nhiều API, và Twitter cũng có web API, tuy chúng thực hiện các chức năng khác nhau, với mục tiêu khác nhau.

Nhìn chung, RESTful API là những API đi theo cấu trúc REST.

 

Cấu trúc REST là gì?

Thật khó giải thích sao cho cụ thể. Tuy nhiên, vẫn có một số quy luật bất biến, như:

  • Sự nhất quán trong cả API
  • Tồn tại không trang thái [ví dụ, không có server-side session]
  • Sử dụng HTTP status code khi cần thiết
  • Sử dụng URL endpoint với logical hierarchy
  • Versioning trong URL chứ không phải trong HTTP header

Sẽ không có bất cứ hướng dẫn nào như W3C HTML5 spec, quá cụ thể đến mức dẫn đến nhầm lẫn, đặc biệt là các nhầm lẫn tai hại quanh thuật ngữ REST.

Hơn nữa, bạn không nhất thiết phải tuân theo những quy luật trên không sai một chữ [dù quả thật đó là những quy luật quan trọng của RESTful API hiện đại].

REST là một phương thức nhỏ gọn. Nên rất được ưa chuộng cho dữ liệu HTTP. Cũng vì vậy nên REST dần phổ biến trên web, và được xem là lựa chọn “số một” cho lập trình API.

Theo như  Vinay Sahni đã nói, “API chính là UI của lập trình viên.” Mọi thứ phải dể dùng, với trải nghiệm tốt. Và đây chính là mục tiêu RESTful APIs hướng đến.

 

Cần chú ý với RESTful APIs

Những tip dưới đây dành riêng cho API trong môi trường ứng dụng web. Đồng nghĩa rằng HTTP là bắt buộc, và dữ liệu API sẽ thường được host trên external server. Hãy xem thử RESTful API làm việc như thế nào bên phía người dùng API.

Người dùng API là lập trình viên web có thể build một script kết nối đến một external API server, rồi dữ liệu cần thiết sẽ chuyển sang HTTP. Lập trình viên khi đó có thể hiển thị dữ liệu lên website mà không cần đến truy cập cá nhân vào external server.

Nhìn chung, có bốn lệnh dùng để truy cập RESTful API:

  1. GET để truy vấn object
  2. POST để tạo object mới
  3. PUT để sửa đổi hoặc thay thế một object
  4. DELETE để loại bỏ một object

Mỗi phương thức trên phải được API call thông qua để gửi chỉ thị cho server phải làm gì.

Đại đa số web API chỉ cho phép GET request lấy dữ liệu khỏi một externer server. Authencation không bắt buộc, nhưng nên có khi ta cho phép các lệnh khá “nguy hiểm” như PUT hay DELETE.

Tuy nhiên, rất ít thấy RESTful API nào cho phép các lệnh này. Ví dụ như //pokeapi.co/, Pokemon API database miễn phí, với lượng rate limit công khai kha khá [rate limit: người dùng bị giới hạn số kiểu API request thực hiện được], nhưng chỉ cho phép phương thức GET để truy cập tài nguyên. Trong “dân gian” ta hay gọi kiểu giới hạn này là consumption-only API.

Return type cũng rất quan trọng, và nên dồng nhất với tất cả tài nguyên. JSON cũng là một return type nổi tiếng, với online specs giải thích đúng cấu trúc dữ liệu.

RESTfill API dùng danh từ cho API object, và động từ để thực hiện hành vi lên những object này.

 

Truy cập API Resources

Public API thường truy cập được từ địa chỉ website trực tiếp. Nói cách khác, cấu trúc URL rất quan trọng, chỉ nên dùng cho API request.

Một số URL có thể bao gồm đường dẫn tiền tố như /v2/ cho phiên bản 2 cập nhật từ API trước đó; hay thấy ở những lập trình viên muốn giữ 1.x API, nhưng vẫn muốn cung cấp cấu trúc mới nhất.

Nên nhớ, return data ở endpoint sẽ thay đổi mạnh mẽ dựa vào phương thức HTTP. Ví dụ, GET trả nội dung, còn POST tạo nội dung mới. Request có thể chỉ đến cùng một endpoint, nhưng kết quả có thể rất khác.

//media02.hongkiat.com/rest-restful-api-dev/03-reddit-api-documentation.jpg

Để hiểu rõ khái niệm này, các bạn có thể lên tìm nhiều ví dụ online khác. Ngoài Pokeapi, ta còn có:

  • Reddit API
  • GitHub API
  • Flickr API
  • Pinterest API

 

Tự build API

Quá trình xây dựng một API riêng không dễ dàng, nhưng cũng không quá phức tạp như nhiều người nghĩ.

Mỗi API phải kết nối đến server để trả dữ liệu. Bạn không những phải viết code để làm điều đó, mà còn phải format return data nữa. Một số yêu cầu khác có thể gồm authentication rate limiting.

Hãy điểm qua một số nguyên lý cơ bản của cấu trúc API.

Build Endpoints

building endpoint là một phần quan trọng trong lập trình API. Khi tạo tài nguyên bạn sẽ muốn dùng danh từ đấy, dừng dùng động từ. Nói cách khác dữ liệu API phải trả kết quả là người, nơi chốn, hoặc “thứ” gì đó. Thông thường, bạn sẽ nhận một “thứ” với thuộc tính cụ thể [ví dụ như tweet và metadata].

Tên danh từ là một phần cực kỳ quan trọng trong lập trình API, dù rất khó học. Nên hãy cố gắng càng đơn giản càng tốt

Vấn đề đáng tranh cãi ở đây là danh từ số ít hay số nhiều. Nếu bạn đang tạo API Twitter, bạn nên có object group trước [như: tweet], rồi object item sau [như: tweet ID].

1

2

$ /tweet/15032934882934

$ /tweets/15032934882934

Trong trường hợp này, tôi cho rằng số ít trong sẽ dễ nhìn hơn, đặc biệt khi chỉ trả một tài nguyên.

Đặt Return Type

Một vấn đè quan trọng nữa là return type data. Đa số người dùng web trông chờ nội dung JSON, vậy đây có lẽ là lựa chọn tốt nhất bân cạnh XML. JSON chính là API return type nên tàng cho lập trình web.

Vẫn còn nhiều mặt về lập trình API không thể kể hết, nếu bạn chưa quen thuộc với API, hãy dành thời gian “vọc” trước một chút. Từ đó xem thử những lập trình viên kahcs làm việc với API như thế nào, và hy vọng bạn sẽ dần quan thuộc hơn với những yêu cầu của API.

Nếu chỉ mới biết về API, bạn có thể xem qua các tài liệu sau:

  • REST API Tutorial Site
  • Writing a Simple REST API
  • Building a RESTful Web Service

 

Tài liệu nghiên cứu

Luyện tập vẫn là cách lập trình nhanh nhất. Những lý thuyết đã qua kiểm chứng luôn đáng để bạn học hỏi, vì qua đó bạn có thể tranh luận với những lập trình viên khác và hiểu được nguyên lý đằng sau lý thuyết đó.

Kết nối với các API khác trước cũng là một cách học hỏi hay. Hãy tìm hiểu về các điểm cơ bản nhất của kết nối client-side, và từ đó bạn có thể chuyển sang lập trình API, tạo API riêng từ con số không.

Bạn có thể tham khảo một số tài liệu dưới  nếu muốn đi theo con đường API này.

Sách

  • REST API Design Rulebook
  • RESTful Web APIs
  • RESTful Web Services Cookbook
  • Undisturbed REST: A Guide to Designing the Perfect API

Bài viết

  • A Beginner’s Guide to HTTP and REST
  • Creating a RESTful API
  • RESTful Resource Naming Guide
  • Creating A REST API using the MEAN Stack

Nguồn: Techtalk

API là gì? API là viết tắt của Application Programming Interface – phương thức trung gian kết nối các ứng dụng và thư viện khác nhau.

Sử dụng API giúp developer đẩy nhanh quá trình phát triển phần mềm, tạo ra sự nhanh chóng, thuận tiện để hướng đến mục tiêu cuối là nâng cao hiệu suất công việc.

Đọc bài viết của ITviec để tìm hiểu xem:

  • API là gì? Web API là gì? 4 đặc điểm nổi bật của API là gì?
  • Ưu, nhược điểm của API và các ứng dụng của API
  • Làm thế nào để đảm bảo tính bảo mật cho API
  • Những API miễn phí cho developer thực hành

Xem thêm việc làm Developer trên ITviec

API là gì?

API là viết tắt của Application Programming Interface – phương thức trung gian kết nối các ứng dụng và thư viện khác nhau.

Nó cung cấp khả năng truy xuất đến một tập các hàm hay dùng, từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

Thi thoảng vẫn có người lầm tưởng API là một ngôn ngữ lập trình nhưng thực ra, API chỉ là các hàm hay thủ tục thông thường. Các hàm này được viết trên nhiều ngôn ngữ lập trình khác nhau.

Để hiểu rõ hơn API là gì, hãy tưởng tượng bạn đang ngồi trong một nhà hàng, trước mặt bạn là menu để gọi thức ăn. Nhà bếp là một phần của “hệ thống”, nơi sẽ chuẩn bị những món ăn mà bạn gọi. Tuy nhiên, làm thế nào để nhà bếp biết được bạn muốn ăn món nào? Và làm sao để họ phân phối thức ăn đến bàn của bạn? Đây là lúc cần đến sự xuất hiện của người phục vụ, đóng vai trò như API.

Người phục vụ [hay API] sẽ nhận yêu cầu từ bạn và truyền đạt với nhà bếp [hệ thống] những thứ cần làm. Sau đó người phục vụ sẽ phản hồi ngược lại cho bạn, trong trường hợp này, họ sẽ mang thức ăn sau khi nhà bếp hoàn thành đến tận bàn cho bạn.

4 đặc điểm nổi bật của API

  • API sử dụng mã nguồn mở, dùng được với mọi client hỗ trợ XML, JSON.
  • API có khả năng đáp ứng đầy đủ các thành phần URI, request/response headers, caching, versioning, content forma…. Bạn có thể sử dụng các host nằm trong phần ứng dụng hoặc trên IIS.
  • Mô hình web API dùng để hỗ trợ MVC như: unit test, injection, ioc container, model binder, action result, filter, routing, controller. Ngoài ra, nó cũng hỗ trợ RESTful đầy đủ các phương thức như: GET, POST, PUT, DELETE các dữ liệu.
  • Được đánh giá là một trong những kiểu kiến trúc hỗ trợ tốt nhất với các thiết bị có lượng băng thông bị giới hạn như smartphone, tablet…

Ưu và nhược điểm của API

Ưu điểm

  1. Giao tiếp hai chiều phải được xác nhận trong các giao dịch sử dụng API. Cũng chính vì vậy mà các thông tin rất đáng tin cậy.
  1. API là công cụ mã nguồn mở, có thể kết nối mọi lúc nhờ vào Internet.
  1. Hỗ trợ chức năng RESTful một cách đầy đủ.
  1. Cấu hình đơn giản khi được so sánh với WCF [Window Communication Foundation]. Cung cấp cấp trải nghiệm thân thiện với người dùng.

Nhược điểm

  • Tốn nhiều chi phí phát triển, vận hành, chỉnh sửa.
  • Đòi hỏi kiến thức chuyên sâu.
  • Có thể gặp vấn đề bảo mật khi bị tấn công hệ thống.

Mình sử dụng API trong hầu hết những dự án web application và mobile application. Mục đích là để kết nối thư viện, dữ liệu giữa những nền tảng khác nhau. Tuy nhiên, tính bảo mật của API còn kém, khiến mình đau cả đầu [cười]. – Ngọc Thái chia sẻ –

Ứng dụng của API

  • Web API: Là hệ thống API được sử dụng trong các hệ thống website, chẳng hạn: Google, Facebook… Hầu hết các website đều cung cấp hệ thống API cho phép bạn kết nối, lấy dữ liệu hoặc cập nhật cơ sở dữ liệu. Đa số Web API được thiết kế theo tiêu chuẩn RESTful.
  • API trên hệ điều hành: Windows hay Linux có rất nhiều API. Họ cung cấp các tài liệu API là đặc tả các hàm, phương thức cũng như các giao thức kết nối. Nó giúp lập trình viên có thể tạo ra các phần mềm ứng dụng có thể tương tác trực tiếp với hệ điều hành.
  • API của thư viện phần mềm [framework]: API mô tả và quy định các hành động mong muốn mà các thư viện cung cấp. Một API có thể có nhiều cách triển khai khác nhau, giúp cho một chương trình viết bằng ngôn ngữ này có thể sử dụng được thư viện viết bằng ngôn ngữ khác.

Làm sao để đảm bảo tính bảo mật cho API?

2 vấn đề phổ biến nhất liên quan đến bảo mật API

1. SQL Injection

Injection hay SQL Injection là một lỗi khá phổ biến. Những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web đến hệ thống quản lý cơ sở dữ liệu [DBMS] để khai thác các thông tin nhạy cảm.

Hướng khắc phục: Ràng buộc thật kỹ dữ liệu người dùng nhập vào. Có thể dùng Regular Expression để loại bỏ đi các ký tự lạ hoặc các ký tự không phải là số hoặc dùng các hàm có sẵn để giảm thiểu lỗi.

2. Spam request

Những request để chế độ công khai rất dễ bị spam.

Ví dụ: chỉ cần hoàn thành username và password để đăng ký tài khoản [dù sau đó có yêu cầu xác thực tài khoản hay không].

Những người thích “nghịch” sẽ viết một đoạn script gửi request liên tiếp cho server. Server sẽ phải xử lý hết các request này và tiến hành đăng ký liên tục.

Hướng khắc phục: Hãy khiến cho những request này trở nên phức tạp hơn. Chẳng hạn: thêm câu hỏi bảo mật, yêu cầu người dùng chờ trong giây lát để thực hiện các thao tác tiếp theo…

Một số phương án ngăn rò rỉ lỗ hổng thông tin trong API

  • Kiểm tra thẩm quyền người sử dụng và xác thực ứng dụng: Ngoài xác thực người sử dụng cuối, bạn cần phải xác thực ứng dụng. Ví dụ nếu bạn đang sử dụng ứng dụng AirBnB hoặc Uber, những ứng dụng này sẽ gọi các API của chúng và vì vậy ứng dụng được xác thực.
  • Mã hóa dữ liệu được truyền đi: Sử dụng chứng chỉ SSL [Secure Sockets Layer] để mã hóa các dữ liệu quan trọng.
  • Chữ ký số: Các chữ ký số là các chuỗi ký tự duy nhất tượng trưng cho một người sử dụng. Bạn lưu trữ các chuỗi này trong cơ sở dữ liệu và chỉ cung cấp nếu người sử dụng nhập đúng tên và mật khẩu.
  • Tránh các mật khẩu cố định hoặc nhúng: Đừng vì lười biếng muốn rút gọn thao tác mà sử dụng mật khẩu đơn giản hoặc lấy thông tin ID và mật khẩu được lưu cục bộ trên một ứng dụng di động.

Những API miễn phí dành cho developer

  • Dog API: API Dog hoàn toàn miễn phí, cung cấp các endpoints cho các ảnh và dữ liệu văn bản về chó. Nó hỗ trợ CORS do đó chúng ta có thể dùng trực tiếp từ các ứng dụng front-end.
  • Petfinder: API này cung cấp các dữ liệu về nhận nuôi thú cưng, yêu cầu xác thực bằng OAuth để truy cập dữ liệu. API này cũng hỗ trợ CORS như Dog API.
  • shibe.online: shibe.online cung cấp URL cho các hình ảnh về những chú chó dễ thương để làm dữ liệu. Nó dùng các chuỗi truy vấn để lấy dữ liệu từ API.
  • Anime News Network API: Nếu bạn thích Anime thì API này chính là dành cho bạn. Nó trả về dữ liệu ở các định dạng khác nhau như HTML hoặc XML. Do đó, nếu bạn cần thao tác và hiển thị dữ liệu thì bạn sẽ phải chuyển đổi từ XML sang JSON.
  • Jikan: Đây là một API dữ liệu anime khác, có 1 REST API hỗ trợ CORS bên cạnh các thư viện được tạo cho các nền tảng khác nhau như Python, Ruby và JavaScript.
  • JSONPlaceholder: Cung cấp một API với các yêu cầu GET, POST, PUT và DELETE có hỗ trợ CORS. Các endpoints được cung cấp với dữ liệu được tải sẵn mà chúng ta có thể dùng để hiển thị và cập nhật.
  • REQ|RES: Cũng giống như JSONPlaceholder, REQ|RES cung cấp 1 API thực sự để bạn xây dựng giao diện người dùng. Nó có các endpoints cho tất cả các thao tác HTTP được sử dụng để nhận và thao tác dữ liệu người dùng fake. Các dữ liệu này đã được chuẩn bị trước nên bạn cũng không phải tự thêm vào nữa.

Nhìn chung, API là một công cụ quan trọng cho các doanh nghiệp thuộc nhiều ngành. API mang đến cho các công ty cơ hội mở rộng quy mô, thúc đẩy sự đổi mới và tiếp cận nhiều đối tượng hơn. Như Forbes đã nói, “Việc doanh nghiệp thắng hay thua ngày càng phụ thuộc vào mức độ họ kết nối với các ứng dụng, thiết bị và dịch vụ của bên ngoài” và xét từ góc nhìn kỹ thuật, API cho phép việc kết nối đó diễn ra. Có thể thấy, API đang thúc đẩy một làn sóng đổi mới mới tập trung vào các dịch vụ chia sẻ.

Bạn thấy bài viết hay và cần thiết với nhiều người? Đừng ngại nhấn nút Share bên dưới nhé.

Và đừng quên tham khảo việc làm Developer trên ITviec

Video liên quan

Chủ Đề