Hướng dẫn xây dựng web service

Xin chào anh chị !
Chuyện là em có khá nhiều môn làm project (web và app di động). Em muốn xây dựng 1 webservice để dùng chung cho tất cả các môn.
Các môn làm project ở trường em cho tự do lựa chọn đề tài, miễn sao tạo ra được sản phẩm hoàn chỉnh là được.

  • Các môn có project làm web dùng : PHP (laravel), .NET (ASP), java (JSP-servlet), …
  • Các môn làm bên di động dùng : kotlin, flutter, …

Background : về frontend em biết dùng Bootstrap, JQuery, reactJS. Mobile em mới tìm hiểu về kottlin, flutter, React Navite. Có chút hiểu biết về SQL Server, MySQL đủ dùng để xây dựng database cho project, có thể tự cấu hình AWS, Azure để deploy web.
Năm nhất em có làm web bán hàng, nhưng do mỗi môn lại học một công nghệ khác hoàn toàn với những môn khác nên không đủ thời gian để luyện code, làm ra website theo tiêu chí chạy là được nên code bị chấp vá dẫn đến điểm không được cao lắm. Nên lần này em quyết định xây dựng web services cho riêng mình để dùng chung cho các môn, học đến môn nào thì backend môn đó sẽ gọi API ra dùng, chỉ cần viết phần front-End.
Đó là ý tưởng của em, hiện tại em vẫn chưa bắt đầu, phiền anh chị “chỉ đường cho em đi” với, em cần trang bị và bổ sung thêm những kiến thức gì để làm được việc này, và roadmap để thực hiện như thế nào. Cảm ơn anh chị rất nhiều.

1 Like

Bạn có thể tạo ra 1 file script để tạo project cho bạn, giúp tiết kiệm khá nhiều thời gian tạo project, giống như việc bạn sử dụng create-react-app để build app React sẵn cho bạn vậy. Ví dụ, thường khi tạo ra 1 project, mình sẽ làm các bước sau:

  • Tạo ra 1 folder đi kèm với tên của nó
  • Trong folder đó, mình sẽ tạo các file và folder theo tree sau:
.
|---README.md
|---src/ # Chứa source code
  • Sau đó, mình thêm project vào git

Mình muốn skip thời gian mình build project, thì mình có thể tạo ra 1 script để tạo project, bất kì khi nào mình cần build project, thì chỉ cần chạy cái script đó là nó sẽ tạo project luôn. Sau đó thì chỉ cần tạo thêm mấy cái file cần thiết trong src/ và code thôi.

Mấy cái này nó hoạt động hiệu quả và làm tốt vai trò dù bạn ở mảng nào. Hoặc bạn có thể dùng các template name để nó cấu hình project riêng luôn tùy vào template bạn chọn.

Về yêu cầu thì cái này build rất là dễ, bạn có thể dùng bất kì ngôn ngữ lập trình nào để build, Python, Java đều được hết. Và cái này cũng không cần roadmap gì hết, bạn chỉ ngồi gõ mấy câu code để thực hiện các lệnh tạo file, thêm vào git, và mấy phần phụ khác là đã xong rồi.

4 Likes

Cảm ơn bạn nhưng ý mình không phải vậy ạ. Để làm được 1 webapp, hoặc app di động hoàn chỉnh thì phải có frontend, backend và database. Nhưng ở mức độ học trong trường thì backend xoay quanh các chức năng thêm, sửa xoá, sắp xếp tìm kiếm, đăng nhập đăng kí, … thanh toán, vận chuyển này kia. nên mình muốn viết 1 lần, database thì thu thập dữ liệu làm 1 database duy nhất dùng cho các môn. Phần giao diện chỉ khác ngôn ngữ lập trình thôi bạn, còn back end thì mình code sao cho để gọi API của web services mà mình đã viết sẵn trước đó chứ không xử lý business logic nữa, và không thiết kế lại database. ( còn teamwork thì chắc chắn phải dùng git rồi ạ)

mấy cái này, cái nào cũng có thể làm rest api mà

dạ đúng rồi anh, em sẽ dùng 1 trong số những ngôn ngữ này để viết 1 web services, nhưng em chưa biết cách thiết kết như thế nào.Lúc gọi API dùng json hay XML, cấu trúc ra sao, làm webservice thì cách viết hàm có gì khác so với bình thường không, có ràng buộc hay phải theo quy tắc gì không :laughing:

Ca này hơi khó, vì mỗi project sẽ có các requirement riêng, gom chung lại thì không ổn. Database cũng vậy, nhiều project có hơn chục table mà gom lại hết thì khá là rối.

Hướng duy nhất mình nghĩ được là dùng SSO để đăng nhập, sẽ dùng chung được phần quản lý user.

API code tầm hơn tháng là auto biết.

4 Likes

giờ hầu như người ta không đùng xml để format data trả về cho api ca, lý do là vì payload của nó lớn, hơn nữa json thì tương đồng với js object trên frontend hơn, dễ xử lý hơn
cấu trúc thì bạn có thể tham khảo những bài blog kiểu best practices to design a clean RESTful API
tóm lại, cứ nghĩ cho đơn giản là viết cho frontend 1 cái endpoint gọi lấy data hoặc xử lý data từ endpoint qua ajax là được
còn phức tạp hơn thì bạn làm nhiều sẽ hiểu ra

6 Likes

Mình cho rằng làm API để phục vụ như vậy là khó khả thi khi người tạo API chỉ có một mình (con sói cô độc) và chỉ để phục vụ cho các môn học. Lý do: API phải phục vụ cho tập dữ liệu, giải quyết vấn đề cụ thể. Sẽ nảy sinh ra là giờ làm sao viết API chung cho project về quản lý nhân sự và project về quản lý sản phẩm. Tìm điểm chung giữa một con người và sản phẩm như thế nào?

Do đó, cách hợp lý theo mình (không phải dân lập trình) lúc này:

  • Chọn dùng một cơ sở dữ liệu đơn giản như SQLite để giảm thời gian tìm hiểu xuống vì có lẽ làm Project không yêu cầu trả lời phải thiết kế hợp chuẩn gì đó rối rắm
  • Tìm một mô hình Database abstraction layer (DBAL) hiện đang có sẵn thư viện ở nhiều nền tảng để dùng, giúp tiết kiệm thời gian khi qua mỗi nền tảng khỏi phải loay hoay lại từ đầu viết mấy query lạ lẫm.
  • Các Project cụ thể thì cần biết các script kiểu Wizard (lên GitHub tìm có đầy) cho phép tạo nhanh cấu trúc thư mục và cấu hình cơ bản để nhanh chóng bắt tay vào viết code thay vì loay hoay chỉnh chọc, sai thư mục này nọ.

Frontend, backend gì đó nghe rối nùi, nếu không bắt buộc phải sử dụng chính xác cái nào cứ dùng thuần có khi lại nhanh hơn so với các “công nghệ” linh tinh.

Nhiều bạn SV không biết “mặc cả” với thầy cô, cứ đổ thừa “thầy cô yêu cầu phải sử dụng công cụ nọ công cụ kia” (mấy cái JS Framework, hoặc ngôn ngữ phái sinh như Kotlin, Flutter). Trong khi đó, đơn giản là bài tập về nhà làm một project cho nó chạy được, người làm có thể trả lời một số câu hỏi (hầu hết đã biết trước) khi thầy cô hỏi để chắc rằng họ là người tự tay làm nên project (mà không phải bỏ tiền ra thuê hoặc copy đồ án đâu đó mà không hiểu).

Như mình thì đơn giản là frontend mình cứ ngồi viết HTML + CSS + JS tính ra số dòng code viết rất ít mà vẫn đảm bảo chương trình chạy vì mình hiểu hầu hết những gì mình viết, chứ dùng mấy cái framework đến lúc chạy nó đỏ lòm chẳng biết do đâu, có khi đơn giản là thiếu một dấu chấm phẩy đâu đó ngồi debug mất quá nhiều thời gian so với tự viết. Túm lại: cơm nhà tự nấu nhanh hơn đi mua cơm hộp :smiley:

(Bật mí một sự thật: có kha khá nhiều SV làm bài tập nhỏ/ lớn/ đồ án bị khủng hoảng rồi lên mạng kêu cứu mình. Sau một hồi tham vấn thì mình xúi lên trường mặc cả với thầy cô thế là về làm ngon lành, bằng “công nghệ” thập niên 1990, cũng đạt điểm cao như ai)

5 Likes

@superthin @kisuluoibieng @ Vuio em cảm ơn mọi người nhiều. Sau khi cân nhắc em nghĩ mỗi project nên làm full từ đầu đến cuối có lẽ sẽ nhanh hơn viết API cho “ăn khớp” tất cả các môn.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?