#1 Lập trình Golang ăn xổi: Giới thiệu dự án
Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh
Lời giới thiệu
Tôi gọi nó là ăn xổi vì thực tế tôi không có code backend bao giờ. Và đây là lần đầu tiên tôi nghĩ rằng mình cần học backend để hiểu hơn về công việc của các dev bên backend. Với 1 lập trình viên frontend – cụ thể là iOS, việc làm việc thường xuyên với các APIs dạng restful là thường xuyên. Bạn sẽ dùng Alamofire, Moya… để request lên server, lấy data dạng JSON trả về, convert chúng sang object và xử lý business cho nó. Do vậy tôi cũng nắm được đôi chút phần nào về dạng của API: chúng ta sẽ có 1 đường link để gọi, các tham số cho header như:
Content-Type: application/json Authorization: token..
Các params gửi lên, token để authenticate, các thông báo lỗi, response trả về, method của API như GET, POST, PUT, DELETE…
Xem thêm các chương trình tuyển dụng Golang lương cao trên TopDev
Bản chất nó như thế nào thì chắc hẳn là 1 dev front end sẽ không bao giờ hiểu được cách làm nếu không tự nhảy vào code. Vì tính tò mò, tôi đã giành 1 chút thời gian cho việc tìm hiểu các ngôn ngữ lập trình backend. Bạn sẽ có Nodejs, php, java, Golang, ruby, python… rất rất nhiều ngôn ngữ để làm. Tôi cũng hoang mang không biết nên chọn cái nào cho hợp lý, nên tôi bắt đầu tìm các bài so sánh giữa chúng. Cuối cùng tôi chọn Golang vì lý do server của nhiều công ty nổi tiếng đang dùng, như Google, facebook, Netflix… Và thứ 2 nó có con trỏ, 1 dạng na ná C++. Có người đã nói là ngôn ngữ C++ cho thế kỷ 21, tận dụng điểm mạnh của C++ và thay thế sự phức tạp của nó. Tuy nhiên khi bắt đầu học, tôi cảm giác hơi khó khăn chút xíu vì cú pháp khá na ná C/C++, mà lại giống Swift, … Nó có 1 số quy tắc mà mãi sau tôi mới biết như cách đặt tên hàm, … Nếu bạn tin tôi thì hãy đọc tiếp nhé, bạn sẽ thấy Golang là 1 ngôn ngữ rất tốt về hiệu năng và chặt chẽ về cú pháp.
Đầu tiên dự án của tôi bạn có thể xem tại đây:
https://github.com/lexuanquynh/go_api
Đây là 1 dự án backend trả về các APIs dạng Restful. Bạn sẽ bắt gặp nhiều thứ quen thuộc như đăng nhập, đăng ký, cập nhật thông tin, authenticate với token… Vui lòng đọc kỹ README để hiểu cách cài đặt và các yêu cầu bắt buộc để chạy được dự án này.
Kiến trúc dự án
Với 1 người như “trang giấy trắng” – liệu bạn sẽ hỏi tôi là “tôi chưa code Golang bao giờ, vậy tôi có thể học được nó 1 cách dễ dàng không?” Câu trả lời này sẽ là “Bạn sẽ học được nó nếu như bạn nắm được luồng của dự án”. Vậy kiến trúc dự án của tôi tuân theo chuẩn nào? Rất thân thuộc với backend – tôi sử dụng Clean architecture để làm dự án này. Nếu bạn cũng code iOS như tôi, bạn hãy xem kiến trúc Clean architecture cho iOS ở đây nhé:
https://github.com/sergdort/CleanArchitectureRxSwift
Nếu bạn đã nắm chắc về kiến trúc này thì thật đơn giản để bắt đầu đọc hiểu project Golang của tôi.
Bạn có thể dịch nó là kiến trúc sạch – hay đơn giản là không cần dịch – chỉ cần hiểu nó hoạt động thế nào thôi.
Bạn nhìn thấy 3 vòng tròn màu khác nhau, phía trong cùng màu cam là lớp Domain – lớp này sẽ chứa các use case của ứng dụng, và các Entities sử dụng trong ứng dụng. Vậy use case là gì:
- Use case: là các hành động trong ứng dụng. Ví dụ hành động đăng nhập, đăng ký.. trong 1 ứng dụng được gọi là use case – và use case sẽ sử dụng các hàm ảo(interface hay protocol) mà bạn đã từng viết để mô tả. Nó chỉ có tên hàm chứ ruột không có. Và lớp nào kế thừa lại các use case này đều phải implement toàn bộ use case.
- Entities: cụ thể là các model. Thường bạn sẽ định nghĩa dưới dạng giá trị(struct) thay vì class. Nó lưu thông tin dữ liệu, nên mới được viết dưới dạng struct.
Vòng tròn thứ 2 là màu xanh lá cây – lớp Platform. Nó implementation các use case của lớp Domain ở trên, và nhằm che dấu cách triển khai như thế nào. Nó có thể là gọi service, lưu dữ liệu vào database(sql, realm..).
Vòng tròn ngoài cùng có màu xanh biển – lớp Application. Application có nhiệm vụ kết nối người dùng với các use case của ứng dụng. Nó có thể được triển khai bất cứ mô hình kiến trúc nào như MVC, MVVM, MVP.
Vậy là bạn đã nắm qua về kiến trúc của dự án. Trong bài tiếp theo, tôi sẽ hướng dẫn bạn cách “ăn xổi” với Golang – làm thế nào để học Golang nhanh chóng và ứng dụng được vào dự án này.
Bài viết gốc được đăng tải tại codetoanbug.com
Có thể bạn quan tâm:
- iOS là gì? Giới thiệu lập trình ios
- Giới thiệu chung về ngôn ngữ lập trình Scratch
- Giới thiệu IDE phổ biến trong lập trình Python
Xem thêm tuyển dụng CNTT hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?