Mình nâng cấp App iOS nhà làm, giải thích về cơ chế gọi API
Rất hay và hữu ích!/5 người
5 thángBình luận: 52
Mình nâng cấp App iOS nhà làm, giải thích về cơ chế gọi API
9 tháng sau khi chia sẻ bài viết tự học lập trình iOS, nay mình đã nâng cấp và thêm tính năng mới cho App, bài viết này mình sẽ chia sẻ về việc gọi API.

*Do mình không chuyên về lập trình nên từ ngữ và các khái niệm có thể gặp sai sót, mong các bạn góp ý nhé ^^

Đây là bài chia sẻ về quá trình mình tự học lập trình: https://tinhte.vn/thread/hoc-lap-trinh-co-kho-khong-review-qua-trinh-tu-hoc-lam-app-ios-va-dang-len-app-store.3363130/

Học lập trình có khó không? Review quá trình tự học làm App iOS và đăng lên App Store

1. Mình là ai Mình là một thầy giáo tiếng Anh và đây là bài về mail tự động mình viết lần trước [Chia sẻ] [Mày mò lập trình và cái kết] - Mail tự động đã thay đổi việc dạy học của mình như thế nào | Tinh tế (tinhte.vn) 2.
tinhte.vn


API là gì?

API là viết tắt của Application Programming Interface, là bộ định nghĩa cách thức để các máy tính giao tiếp với nhau. Để trực quan hơn mình sẽ mô tả cách mà App của mình giao tiếp với server chứa dữ liệu.

Giải thích cơ chế App mình hoạt động

ip11-demo-12.jpg

Quảng cáo




Mình dùng ngôn ngữ Swift để xây giao diện cho App trên điện thoại, nó sẽ giống như hình trên khi chưa có dữ liệu từ server.

ip11-demo-2.jpg
Mình đặt sẵn lệnh yêu cầu dữ liệu gửi lên server, khi App được mở lên thì nó sẽ kích hoạt và gửi yêu cầu đến server thông qua API, đây là nội dung mình gửi lên để lấy dữ liệu cho màn hình home.

Screen Shot 2022-03-28 at 23.09.15.png
Nội dung này có thể dịch nôm na là: “Server ơi, gửi giúp danh mục bài học cho màn hình Home”

Những nội dung của API được xây dựng bởi anh bạn làm Backend của mình, anh ấy là lập trình viên .NET, sau khi làm xong thì danh sách các mục dữ liệu cần gọi sẽ được hướng dẫn cụ thể, mình muốn lấy dữ liệu nào chỉ cần bấm xem hướng dẫn WebApi được anh Backend làm sẵn.

ip11-demo-4.jpg
Khi gửi đúng lệnh, server sẽ gửi dữ liệu về và App sẽ lấy dữ liệu bỏ vào những ô mình thiết kế sẵn, các bạn sẽ thấy phần Lesson đã hiện tên bài học như: Speaking Task 1, Speaking Task 2, Writing Boost Vocabulary, phần hình ảnh của Blog (đây là dữ liệu được lưu trên server).

ip11-demo-5.jpg

Quảng cáo


Tương tự, khi mình bấm vào bài Writing Boost Vocabulary thì App sẽ gửi một lệnh API khác lên server để yêu cầu dữ liệu cho danh mục này, khi có dữ liệu thì App sẽ mở một màn hình khác và hiển thị tên của bài học lên.

ip11-demo-13.jpg
Bấm vào một bài học, App sẽ gửi yêu cầu lấy dữ liệu cho màn hình học từ vựng, màn hình này sẽ có âm thanh, dữ liệu trả về sẽ có link file đuôi mp3, App sẽ play file này để người học nghe từ vựng.

ip11-demo-14.jpg
Người học nhập từ vựng vào ô rồi bấm check → App sẽ so sánh từ mà người học nhập với dữ liệu nhận được từ server, nhập sai nó sẽ báo đỏ và hiện nút REVISE LATER, bấm vào nó sẽ lưu từ này lại để người học ôn lại sau.

ip11-demo-15.jpg
Trường hợp nhập đúng → App sẽ báo xanh và hiện nút CORRECT! NEXT để người học qua luyện từ vựng tiếp theo.

Đây là link App iOS để mọi người tham khảo: https://apps.apple.com/us/app/english-journey-by-vuive/id1573506377

Quảng cáo



Phiên bản Android mình sẽ release trong tháng sau.

Có rất nhiều API được cung cấp miễn phí để mọi người luyện tập làm app, tất cả đều có hướng dẫn sử dụng.
API làm app thời tiết: Current weather data - OpenWeatherMap
API làm app từ điển: Free Dictionary API

Kết

Sau khi bài viết tự học lập trình lên sóng, mình nhận rất nhiều lời mời kết bạn và đã hỗ trợ nhiều bạn tự học lập trình, trong đó có nhiều anh chị lớn tuổi nhưng vẫn rất say mê với kỹ năng này. Hy vọng bài viết sẽ mang lại cảm hứng để mọi người tạo ra sản phẩm hữu ích cho công việc và học tập ^^


Bonus: Đây là video về một bà cụ ở Nhật Bản tự học lập trình iOS qua sách, bà học ở tuổi 81 ^^
52 bình luận
zcmgyu
TÍCH CỰC
5 tháng
Bạn nên design lại RESTful API theo hướng resource. Chứ không nên đặt end-point ntn.

Ví dụ:
/api/services/app/flashCardCategorieService/GetAllCategories

→ [GET] /api/flash-cards/categories

→ Bằng method Get, thì người ta đã biết mục đích của API này là dùng để get categories rồi, chứ không cần phải ghi tên của method này vào trong end-point.

Có thể tham khảo các public API của các dịch vụ lớn để tham khảo cách đặt tên end-point. https://developer.spotify.com/documentation/web-api/

Web API | Spotify for Developers

Simply put, your app receives Spotify content through the Spotify Web API.
developer.spotify.com
@zcmgyu Mình cảm ơn ạ ^^
pphongict
ĐẠI BÀNG
5 tháng
@qsangp không biết tiếng anh học lập trình có khó hơn không bạn? ( so với những người giỏi tiếng anh như bạn)
@zcmgyu đúng rồi, ltv mới sẽ có những lỗi sơ đẳng kiểu này,
Video về bà cụ 84 tuổi thật là khiến mình hổ thẹn quá 😔
@Nam Air tại sao? Mỗi người có mục tiêu riêng mà
@Nam Air Hihi
dccuong
ĐẠI BÀNG
5 tháng
@nightwish47 Mục tiêu của bác ấy là như bà cụ đó nên thấy hổ thẹn
sonic1293
ĐẠI BÀNG
5 tháng
Mình nghĩ bạn nên flow theo RESTful API vì nó thiết kế API theo 1 chuẩn chung để quản lý các resource của mình. Thông qua các method thì phần nào người khác cũng sẽ đoán đc API dùng cho mục đích gì.
GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
POST (CREATE): Thêm mới một Resource.
PUT (UPDATE): Cập nhật thông tin cho Resource.
DELETE (DELETE): Xoá một Resource.
@sonic1293 post cũng có thể select được mà, nhiều khi select mà dùng get thỳ không ổn tý nào
@xikiuwant POST có đặc điểm là có thể truyền payload vào body. Nên người ta mặc định POST dành cho create resource, như việc điền form vào và nhấn submit, nhưng thực ra trong trường hợp advanced search, nhiều điều kiện filter thì người ta dùng POST truyền filter vào body luôn
Tại sao App không nên giao tiếp trực tiếp với sever mà phải thông qua API vậy các bác?
Ví dụ như các dịch vụ do bên thứ 3 cung cấp thì người ta muốn giới hạn quyền thì mới cần thông qua API, còn của nhà thì tại sao nên sử dụng API nhỉ?
@bango123 Cảm ơn bro, bro này giải thích nghe có vẻ hợp lý hơn nè 👍
pikupi
TÍCH CỰC
5 tháng
@dangchiviet như bác trên đề cập, thời nay là đa nền tảng, việc tách backend cần thiết, API giúp kết nối từ web, app trên mobile, desktop or IoT và chỉ cần viết app trên các nên nền tảng khác còn lại gọi API lấy data thôi, hồi xưa gom chung nên lúc build trên nền tảng khác phải viết lại rất tốn công sức tiền của.
@pikupi có nghĩa là khi xây dựng một ứng dụng, ví dụ như cụ thể app trong bài này, người ta đã tính toán cho vấn đề nếu sau này mở rộng ra đa nền tảng hả bro?
Làm ios cần macbook cấu hình ntn bạn ơi ?
khanghk
TÍCH CỰC
5 tháng
@tunghactech Chip intel thì bỏ dòng air ra, M1 thì con nào cũng được.
Nói chung máy càng mạnh thì build càng nhanh càng tiện.
binhm36
ĐẠI BÀNG
5 tháng
@tunghactech Viết app ios thì phải có máy mac mới code đc nhé b
@binhm36 thì thế t mới đang hỏi là tầm cấu hình ntn là vừa
8gb ram có đủ hay ko hay phải 16gb mới đủ để chạy
Mấy cái response JSON bác chụp hình hay làm sao đó cho dễ nhìn chứ ai lại copy y chang rồi cho vào wysiwyg như thế :v. Kiểu người ko biết gì họ cũng biết đó là một thứ data được trả về từ API. anyway,
nhìn cách đặt tên URL thấy ko chuyên nghiệp cho lắm :v
@zerolove77 Thì đúng là mình không chuyên mà haha
@zerolove77 Đã fix lại cho dễ đọc hơn hihi
bài viết đi sâu vào chuyên môn quá, đa số chỉ có mấy trai ngành vô comment
Hun cái nè
oxechip
TÍCH CỰC
5 tháng
Dân ko lập trình , ráng đọc để có thêm kiến thức
Đọc xong ngồi thở, não xoắn lun
@oxechip Nghĩ đơn giản thì API chỉ là thuật ngữ chỉ cách phần mềm giao tiếp với nhau thôi. VD như app thời tiết trên iOS phải lấy thông tin trạng thái thời tiết, nhiệt độ, độ ẩm,... của HCMC chẳng hạn. Mobile sẽ gửi một hỏi là "Thời tiết ở HCMC như thế nào?", bên dịch vụ cung cấp thông tin thời tiết như The Weather Channel sẽ nhận câu hỏi, xử lý rồi trả về thông tin thời tiết cho mobile hiện lên màn hình

Còn thực sự việc giao tiếp như thế nào thì phải biết lập trình cơ bản, cơ sở dữ liệu, web, mạng máy tính mới có thể hiểu sâu được 😁
phit
ĐẠI BÀNG
5 tháng
Cười vô mặt
Akinori
TÍCH CỰC
5 tháng
Giải thích đơn giản là giống như Buffet

Nhà hàng (server) cung cấp và dọn thức ăn (data) ra các quầy (API) để thực khách (app/web) lấy về ăn (hiển thị)
@Akinori Theo mình thì thực khách (client) gọi chạy bàn (server) ra, và gọi menu (API) , chạy bàn lấy API rồi đem tới cho đầu bếp (database) để xào nấu rồi trả thức ăn (data) lại 😃
RESTful API có một nhược điểm là luôn trả về cả một mớ dữ liệu khi GET mà đôi lúc chỉ cần dùng vài cái. Muốn lấy nhiều dữ liệu ở các url khác nhau thì cần gọi nhiều API, rồi xong ở phía client phải lắp ghép các dữ liệu vào.
Giờ có GraphQL hay hơn, có lẽ đây sẽ là tương lai của web API.
Hình như ai mới học lập trình cũng làm app liên quan đến english. Mình trước học android cũng làm cái app đầu tay để học từ vựng. Nhưng mà có những app làm cho vui thì lại mang đến nhiều thu nhập nhất. Hài.
@tuanminhxd1 Mấy app học English nếu viết tốt thì là nguồn thu nhập thụ động cực ngon á. Vì ai cũng có nhu cầu học tiếng Anh - trừ người Anh Mỹ (thậm chí A, M cũng có người học - giống như người Việt học ko tốt tiếng Việt thì cần đi học lại vậy á).
Mình có thèng bạn làm mấy app thi TOEIC, TOFEF này nọ tiền quảng cáo mỗi tháng vài ngàn USD là bình thường. Giờ mua cái mảnh đất ở tỉnh làm vườn chơi chơi với work remote bên Tây, cập nhật app thôi ko đi làm cty nữa.
@tuanminhxd1 Cũng đồng ý với bạn về mấy cái app chơi chơi lại kiếm tiền nhiều hơn nhưng về lâu dài cũng thoái trào thôi. App học thì vẫn còn sống mãi. Tính đường dài thì app học vẫn ngon. Giống như mấy clip xàm xàm, tào lao, lộ hàng thì triệu view, còn clip học hành thì thấp lè tè...........
nghe hay, cũng đam mê lập trình nhưng đọc đến là hoa mắt chóng mặt 😁
Tin học như cơm bình dân là đây chứ đâu. Nói thật bạn lập trình để viết bài trên Tinh tế để kiếm like thì được, chứ để kiếm tiền bằng lập trình thì nên để người chuyên nghiệp làm.
App của bác chủ thơt tên là gì vậy ae?
Để tải về dùng thử xem ntn
@MrSilver1288 Có link trong bài luôn đó bạn
garish
TÍCH CỰC
5 tháng
1 like cho thầy giáo, tự học không qua trường lớp như vầy là rất ổn luôn.
Cười vui vẻ
respect những người như bạn
Bạn giỏi quá








  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2022 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019