Phân biệt giữa API và frontend-backend


22

Tôi đang cố gắng viết một trang web kinh doanh "tiêu chuẩn". Theo "tiêu chuẩn", ý tôi là trang web này chạy HTML5, CSS và Javascript thông thường cho giao diện người dùng, back-end (để xử lý công cụ) và chạy MySQL cho cơ sở dữ liệu. Đây là một trang CRUD cơ bản: phần đầu chỉ làm đẹp bất kỳ cơ sở dữ liệu nào có trong cửa hàng; phụ trợ ghi vào cơ sở dữ liệu bất cứ điều gì người dùng nhập vào và thực hiện một số xử lý. Giống như hầu hết các trang web ngoài kia.

Khi tạo các kho lưu trữ Github của tôi để bắt đầu mã hóa, tôi nhận ra rằng tôi không hiểu sự khác biệt giữa back-end back-endAPI . Một cách khác để đặt câu hỏi của tôi là: API đi vào đâu trong bức tranh này?

Tôi sẽ liệt kê thêm một số chi tiết và sau đó là những câu hỏi tôi có - hy vọng điều này sẽ cho các bạn biết rõ hơn về câu hỏi thực sự của tôi là gì, bởi vì tôi rất bối rối nên tôi không biết câu hỏi cụ thể để hỏi.

Một số chi tiết:

  • Tôi muốn thử mẫu Model-View-Controller. Tôi không biết nếu điều này thay đổi câu hỏi / câu trả lời.
  • API sẽ là RESTful
  • Tôi muốn back-end của mình sử dụng API của riêng tôi thay vì cho phép back-end gian lận và gọi các truy vấn đặc biệt. Tôi nghĩ phong cách này phù hợp hơn.

Những câu hỏi của tôi:

  • Có phải front-end gọi back-end gọi API? Hay front-end chỉ gọi API thay vì gọi back-end?
  • Có phải back-end chỉ thực thi một API và API trả lại quyền điều khiển cho back-end (trong đó back-end đóng vai trò là bộ điều khiển cuối cùng, ủy thác các nhiệm vụ)?

Các câu trả lời dài và chi tiết giải thích vai trò của API cùng với back-end back-end được khuyến khích. Nếu câu trả lời phụ thuộc vào mô hình lập trình (các mô hình khác với mẫu Mô hình-Khung nhìn-Trình điều khiển), vui lòng mô tả các cách nghĩ khác về API này. Cảm ơn. Tôi rất bối rối.

Câu trả lời:


24

Tôi nghĩ rằng bạn đang bối rối bởi cách thuật ngữ API đang bị lạm dụng và lạm dụng bởi nhiều nhà phát triển web.

  • API có nghĩa là Giao diện lập trình ứng dụng, tức là bất kỳ giao diện được chỉ định chính thức nào giữa các hệ thống khác nhau (hoặc các bộ phận của cùng một hệ thống).
  • Cách đây một thời gian, việc khởi động web cung cấp quyền truy cập công khai vào một số dữ liệu nội bộ của họ thông qua API dịch vụ web, thường sử dụng REST và JSON, do đó cho phép các nhà phát triển bên thứ ba tích hợp với hệ thống của họ. Các nhà phát triển web bắt đầu sử dụng thuật ngữ "API" để chỉ cụ thể (và chỉ) "dịch vụ web có thể truy cập công khai" và sử dụng sai để bao gồm việc triển khai.
  • Về mặt lối vào và phụ trợ, API dịch vụ web này (và triển khai của nó) phụ trợ . Một số phần của nó có thể được truy cập công khai và những phần khác chỉ để lối vào của bạn.
  • Một tên khác cho cái này là "lớp dịch vụ", tức là mã
    • đại diện cho các dịch vụ mà frontend gọi
    • không chứa logic hiển thị (rốt cuộc đó là công việc của frontend)
    • trừu tượng và chi tiết hơn so với các hành động CRUD đơn giản (một lệnh gọi dịch vụ thường sẽ liên quan đến nhiều hành động CRUD và nên được thực hiện trong một giao dịch cơ sở dữ liệu).
    • chứa logic kinh doanh của ứng dụng

Tôi có một câu hỏi thực sự ngu ngốc. Đây có phải là bản chất của Kiến trúc hướng dịch vụ?
johnny

@johnny: không - SOA là một khái niệm ở mức độ trừu tượng cao hơn nhiều, nó thiên về cách bạn tổ chức chức năng kinh doanh của bạn hơn là về các lớp kỹ thuật.
Michael Borgwardt

Tôi sẽ không gọi nó là lạm dụng mặc dù. Có lẽ "đổi thương hiệu"? Điều này cũng tương tự với "MVC" trong bối cảnh phát triển web một cái gì đó hoàn toàn khác so với thời PARC khi thuật ngữ được đặt ra.
Thomas Junk

9

Hãy để chúng tôi phác thảo kiến ​​trúc của một trang web "điển hình", với cả "mặt trước" và "mặt sau". Và vì đó là một trang web, chúng tôi cũng sẽ có một "khách hàng". (Vì không có cách nào để JavaScript trong trình duyệt gọi trực tiếp MySQL trên máy chủ.)

Để rõ ràng, các thuật ngữ chúng tôi đang sử dụng là:

  • Máy khách : Trình duyệt tuân thủ HTML5, đặc biệt. DOM và JavaScript ở đó được tải để thao tác với nó.
  • Front-End : Máy chủ PHP mà DOM được trỏ tới, chứa cả trang cá nhân được yêu cầu và một số điểm truy cập XML hoặc JSON kiểu AJAX.
  • Back-end : Một máy chủ cơ sở dữ liệu, nơi MySQL chạy.

Đối với một chương trình được thiết kế đúng, mỗi thành phần này có một API riêng để giao tiếp với các thành phần khác. Mã PHP "mặt trước" không SELECTtrực tiếp phát hành các câu lệnh SQL tùy ý , mà gọi các thủ tục được lưu trữ, SQL được ủy quyền trước hoặc thậm chí các lệnh gọi PHP khác nhau đến một phiên bản PHP hoàn toàn khác chạy trên máy chủ back-end . Các thủ tục được lưu trữ hoặc các cuộc gọi HTTP riêng biệt này là một API.

Định nghĩa không thay đổi ngay cả khi chúng tôi cho phép một số tạp chất trong thiết kế của chúng tôi. Nếu PHPtệp của bạn ghi và gửi một chuỗi SQL trực tiếp tới MySQL, thì NÓ CÒN LÀ API , mặc dù một chuỗi rất bất thường mà bạn khó có thể lặp lại.

Lưu ý rằng hoàn toàn có thể để php mặt trước của bạn được đồng bộ hóa hoàn toàn, không có bất kỳ AJAX nào. Nếu bạn gọi các hàm PHP bên ngoài tương tự trong tệp đồng bộ đã nói, bạn có thể coi chúng là sử dụng cùng API với phiên bản phía máy khách, mặc dù việc sử dụng thuật ngữ "API" ở đây có thể không mang lại sự rõ ràng thực sự.

Rốt cuộc, một API như một Giao diện lập trình ứng dụng và thực sự đề cập đến bất kỳ lúc nào một chương trình gọi bên ngoài quy trình của chính nó. Nếu bạn đang viết một dự án có cả front-end và back-end, hãy là AJAX / PHP / MySQL như trên hoặc MS Access / SQL Server, thật đáng để xác định rõ ràng cách bạn sẽ gọi nhau, nếu không vì lý do nào khác ngoài việc làm cho nó dễ dàng biết nơi để tìm khi một cái gì đó bị phá vỡ.

(Và chủ đề về API công khai hoàn toàn là một thứ khác. Trong ví dụ của chúng tôi ở trên, chỉ có URL được hiển thị trong ứng dụng khách là "API công khai." bất kỳ mã nào ngoài tầm kiểm soát của bạn để gọi API nội bộ của bạn và bạn sẽ từ chối hoàn toàn các kết quả đó hoặc bảo lưu quyền làm như vậy trong tương lai.


2
Trên thực tế frontend là mã phía máy khách (HTML, Javascript) và phụ trợ là mã máy chủ (PHP, Python, Ruby).
Pithikos

-3

API xử lý các yêu cầu http như GET, POST, FETCH, DELETE ... có thể được sử dụng tùy thuộc vào quyền truy cập mã thông báo của bạn để truy xuất dữ liệu ở định dạng cụ thể như json, xml, v.v.

"Dữ liệu" này có thể được sử dụng vào ứng dụng của bạn để nhận API (Giao diện lập trình ứng dụng), một dịch vụ web có thể truy cập công khai để thu thập dữ liệu có thể thú vị với một số đối tượng.

Dữ liệu này có thể trả về một tập hợp dữ liệu đại diện cho dữ liệu bị lỗi hoặc truy xuất dữ liệu từ máy chủ API của nó

API có nghĩa là back end để nó có thể được sử dụng trong bất kỳ môi trường giao diện người dùng nào. Điều này có nghĩa là nó có thể được sử dụng trong ứng dụng web, android, ios ... có thể xử lý các yêu cầu https

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.