Tải bản đầy đủ (.pdf) (23 trang)

Báo cáo thực tập lập trình back end với fastapi cho lottery website

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.05 MB, 23 trang )

1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

LẬP TRÌNH BACK-END VỚI FASTAPI
CHO LOTTERY WEBSITE
Cơng ty thực tập

: Công ty TNHH Giải pháp Phần mềm TISOHA

Người phụ trách

: Phạm Xuân Bách

Thực tập sinh

: Trương Gia Thạch

TP. Hồ Chí Minh, tháng 12 năm 2022

Mentor: Phạm Xuân Bách

Trương Gia Thạch


2

LỜI MỞ ĐẦU



Trong cuộc cách mạng công nghiệp 4.0, công nghệ thơng tin nói chung và ngành Cơng
nghệ phần mềm nói riêng ln là nhân tố đóng vai trị quan trọng trong q trình phát triển của
xã hội.
Cơng nghệ Web, hay công nghệ sản xuất các trang web đã và đang phục vụ hầu hết các
nhu cầu của con người từ bán hàng, dạy học đến thông tin liên lạc,... Hiện nay đã có đến hơn 1.7
tỷ trang web, nhưng nhu cầu tạo ra những trang web mới vẫn chưa có dấu hiệu giảm.
Do đó, một trang web muốn được nhiều người sử dụng phải đáp ứng được yếu tố hình
thức và nội dung. Làm thế nào để sản phẩm tạo ra đạt chất lượng cao ở hai yếu tố trên ln làm
bất kì một đội ngũ phát triển website nào cũng cần phải suy nghĩ đau đầu. Để thử thách bản thân
trong ngành công nghiệp web, em đã lựa chọn thực tập với vị trí Back-end là định hướng cho
việc học tập và nghiên cứu sâu hơn trong quy trình sản xuất web.
FastAPI là một framework web hiện đại, nhanh (hiệu suất cao) để xây dựng API với
Python 3.6+. Tuy chỉ mới được phát hành được 4 năm nhưng framework này đã được nó đã tạo
được tiếng vang lớn và có cộng đồng phát triển đổng đảo.
Bên cạnh thời gian học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế,
cũng như muốn được tham gia làm việc trong một mơi trường chun nghiệp, em có dự định là
sẽ thực tập trong kì này. Vì vậy, em quyết định chọn công ty TISOHA là nơi sẽ giúp em thực
hiện được dự định này.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


3

LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty TNHH Giải pháp Phần mềm TISOHA đã tạo điều

kiện cho em có cơ hội được thực tập tại cơng ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của anh trainer, nhóm thực
tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể thành thạo việc lập trình
Web Back-end với FastAPI.
Đặc biệt cảm ơn anh Phạm Xuân Bách, đã training về FastAPI, hướng dẫn, hỗ trợ em rất
nhiều từ các vấn đề kỹ thuật đến những khó khăn trong cơng việc; cảm ơn anh Đặng Hải Thịnh
và anh Đỗ Công Bá, đã giúp đỡ cho em tận tình những khó khăn việc làm quen với môi trường
mới. Cảm ơn anh Đỗ Công Bá một lần nữa vì đã tạo văn hóa cơng ty lành mạnh, chuyên nghiệp,
đầy năng động giúp em hoàn thành thực tập và có thêm niềm đam mê, nhiệt huyết với lập trình
Web.
Cũng xin cảm ơn thầy cơ trong khoa Cơng nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.
Trương Gia Thạch
TpHCM, ngày 20 tháng 12 năm 2022

Mentor: Phạm Xuân Bách

Trương Gia Thạch


4

NHẬN XÉT CỦA KHOA

..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................

..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................

Mentor: Phạm Xuân Bách

Trương Gia Thạch


5

MỤC LỤC
MỤC LỤC ...................................................................................................................................................... 5
CHƯƠNG 1. GIỚI THIỆU CÔNG TY THỰC TẬP ................................................................................................. 6
1.

GIỚI THIỆU CÔNG TY TNHH GIẢI PHÁP PHẦN MỀM TISOHA .................................................................................. 6

2.

SẢN PHẨM CỦA CÔNG TY ................................................................................................................................... 6


CHƯƠNG 2. NỘI DUNG THỰC TẬP ................................................................................................................ 9
1.

TÌM HIỂU CƠNG TY VÀ CÁC KỸ NĂNG CƠ BẢN TRONG CÔNG TY ................................................................................. 9

2.

NGHIÊN CỨU KỸ THUẬT ..................................................................................................................................... 9
2.1.

Các công cụ làm việc .......................................................................................................................... 9

2.2.

Tìm hiểu ngơn ngữ Python ............................................................................................................... 10

2.3.

Nghiên cứu tài liệu và những kỹ thuật về FastAPI ........................................................................... 11

2.4.

Nghiên cứu tài liệu và những kỹ thuật về Docker ............................................................................ 13

2.5.

Thực hành xây dựng máy chủ API cho dự án Lottery Website ........................................................ 14

3.


THỰC HIỆN PROJECT ....................................................................................................................................... 14

4.

LỊCH LÀM VIỆC ............................................................................................................................................... 15

CHƯƠNG 3. CHI TIẾT VỀ PROJECT................................................................................................................ 17
1.

GIỚI THIỆU VỀ PROJECT ................................................................................................................................... 17

2.

CÁC CÔNG VIỆC ĐÃ LÀM .................................................................................................................................. 17

3.

2.1.

Cài đặt, chạy thử dự án.................................................................................................................... 17

2.2.

Tạo API của Distributor channel:...................................................................................................... 18

2.3.

Xử lý Agency API, resource ............................................................................................................... 19


2.4.

Một số công việc khác ...................................................................................................................... 21

KẾT QUẢ ....................................................................................................................................................... 21

TÀI LIỆU THAM KHẢO ................................................................................................................................. 22
TỔNG KẾT................................................................................................................................................... 23

Mentor: Phạm Xuân Bách

Trương Gia Thạch


6

Chương 1. Giới thiệu công ty thực tập

1. Giới thiệu Công ty TNHH Giải pháp Phần mềm TISOHA
Công ty TNHH Giải pháp phần mềm TISOHA là một doanh nghiệp được thành
lập vào 10/2020 đến nay đã hoạt động được gần 2 năm. Trong thời gian hoạt động,
công ty đã nhận cung cấp dịch vụ cho nhiều khách hàng tại Mỹ, Malta, Úc và
Singapore...nơi tập trung phát triển ứng dụng trên nền web và lập trình ứng dụng cho
điện thoại thơng minh.
TISOHA đem lại cho khách hàng những dịch vụ lập trình, gia cơng phần mềm uy
tín chất lượng với độ an toàn cao, khả năng mở rộng và tiết kiệm chi phí cho khách
hàng.
2. Sản phẩm của cơng ty
Sản phẩm của công ty chủ yếu là các dự án outsource về giáo dục, giải trí, thương
mại.


Mentor: Phạm Xuân Bách

Trương Gia Thạch


7
Công ty luôn mang đến cho khách hàng dịch vụ phát triển, gia cơng phần mềm
hồn hảo từ hỗ trợ, tư vấn, bảo trì đến phát triển các ứng dụng, phần mềm một cách
toàn diện. Các sản phẩm và giải pháp do công ty triển khai được đảm bảo mức độ an
tồn cao, có khả năng mở rộng, mang lại sự hài lòng về chất lượng và thỏa mãn về
chi phí.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


8

Mentor: Phạm Xuân Bách

Trương Gia Thạch


9

Chương 2. Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình Web Back-end với FastAPI cho Lottety
Website” nhằm mục đích giúp sinh viên thực tập được đào tạo tồn diện về lập trình

Back-end, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình,
giao tiếp. Tại cơng ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một
môi trường phát triển web chun nghiệp.
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty
Thời gian: 2 ngày.
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển
(như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của
cơng ty.
Ngồi ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty
như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc,
cách ước tính thời gian hồn thành cơng việc, sử dụng các phần mềm chuyên nghiệp cho
công việc,…
Kết quả: Hiểu thêm về cơng ty TISOHA, q trình thành lập và phát triển. Có thêm các
kỹ năng về việc sử dụng email, các phần mềm trong cơng việc, làm việc có kế hoạch, có
kỷ luật, có trách nhiệm hơn.
2. Nghiên cứu kỹ thuật
2.1. Các công cụ làm việc
Thời gian: 2 ngày
Nội dung: Tìm hiểu về các cơng cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, người phụ trách đã hướng dẫn thực tập sinh tìm hiểu về các
cơng cụ sẽ giúp ích cho trong cơng việc sau này. Một số phần mềm trong số đó như

Mentor: Phạm Xuân Bách

Trương Gia Thạch


10
Slack – Phần mềm chat, report công việc hàng ngày của công ty, Jira – Ứng dụng

theo dõi và quản lý quy trình phát triển phần mềm, Redmine – Cơng cụ quản lý và
theo dõi, kiểm soát các vấn đề của dự án, Visual Studio Code – Trình chỉnh sửa mã
nguồn, Git – Hệ thống quản lý các phiên bản mã nguồn phân tán, Gitlab – Phần mềm
quản lý kho mã nguồn Git,…
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Làm quen và sử dụng được những phần mềm đã nêu trên.
2.2. Tìm hiểu ngơn ngữ Python
Thời gian: 4 ngày (1 tuần).
Nội dung: Được training về Python.
-

Python là một ngôn ngữ cấp cao, thông dịch, tương tác và hướng đối tượng. Python
được thiết kế để dễ đọc. Nó sử dụng các từ khóa tiếng Anh thường xuyên trong khi
các ngôn ngữ khác sử dụng dấu chấm câu và nó có ít cấu trúc cú pháp hơn các ngôn
ngữ khác.

-

Kiểu dữ liệu và khai báo biến trong Python.

-

Các toán tử trong Python.

-

Các cấu trúc điều kiện và vịng lặp trong Python.

-


Hàm, Class và Mơ-đun trong Python.

-

Lập trình hướng đối tượng trong Python.

-

Ngồi ra cịn có các case-study nâng cao để sinh viên thực tập tìm hiểu thêm như
Decorators, Error Handling, Generators, Testing,…

Thực hiện:
-

Tham gia đầy đủ các buổi training của công ty.

-

Nghiên cứu, kết hợp thực hành tài liệu mà công ty cung cấp.

Kết quả:
-

Nắm được kiến thức Python cơ bản.

Mentor: Phạm Xuân Bách

Trương Gia Thạch



11
-

Có thể tạo một ứng dụng nhỏ bằng Python.

2.3. Nghiên cứu tài liệu và những kỹ thuật về FastAPI
Thời gian: 8 ngày (2 tuần).
Nội dung: Các kiến thức cơ bản về FastAPI framework.
-

REST APIs.
Là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế
Web services) để tiện cho việc quản lý các resource. Nó chú trọng vào tài nguyên hệ
thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng
thái tài nguyên được định dạng và được truyền tải qua HTTP.

-

Pydantic.
Pydantic là một thư viện để xác định xác thực dữ liệu, tuần tự hóa và tài liệu (sử
dụng JSON Schema) dựa trên các kiểu dữ liệu của Python.
FastAPI sử dụng nó để:
-

Xử lý tất cả các xác thực dữ liệu, tuần tự hóa dữ liệu và tài liệu mơ hình tự động
(dựa trên JSON Schema).

-

FastAPI lấy dữ liệu JSON Schema đó và đặt nó vào OpenAPI.


Starlette.
Starlette là một framework/bộ công cụ ASGI (Asynchronous Server Gateway
Interface) nhẹ, rất lý tưởng để xây dựng các dịch vụ không đồng bộ hiệu suất cao. Nó
rất đơn giản và trực quan. Nó được thiết kế để có thể mở rộng dễ dàng và có các
thành phần mơ-đun.
FastAPI sử dụng nó để:
-

Xử lý tất cả các phần web cốt lõi. Thêm các tính năng hàng đầu.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


12
-

Bản thân lớp FastAPI kế thừa trực tiếp từ lớp Starlette.

Uvicorn.
Uvicorn là một máy chủ ASGI nhanh (như chớp), được xây dựng trên uvloop và
httptools.
Nó khơng phải là một web framework, mà là một máy chủ. Ví dụ: nó khơng cung
cấp các công cụ để định tuyến theo đường dẫn. Đó là thứ mà một framework như
Starlette (hoặc FastAPI) sẽ cung cấp trên cùng. Đây là máy chủ được đề xuất cho
Starlette và FastAPI.
FastAPI sử dụng nó để:


-

-

Máy chủ web chính để chạy ứng dụng FastAPI.

-

Có thể kết hợp nó với Gunicorn để có một máy chủ đa xử lý không đồng bộ.

FastAPI.
Là một web framework hiện đại, nhanh (hiệu suất cao) để xây dựng API với
Python 3.6+ dựa trên các kiểu dữ liệu Python tiêu chuẩn. Đứng trên vai hai người
khổng lồ là Starlette và Pydantic. FastAPI có tất cả các tính năng mà hai người khổng
lồ này có. Ngồi ra các tính năng nổi bậc như:
-

Tự động tạo giao diện tài liệu đặc tả API từ mã.

-

Hệ thống định tuyến đơn giản, sử dụng trực tiếp tên các phương thức HTTP.

-

Có các giá trị mặc định hợp lý, nhưng cũng có thể tùy chỉnh một cách mạnh mẽ.
(Path/Query parameters, Body, Form Data, Request Files,…)

-


Có một hệ thống dependency injection mạnh mẽ. Tìm cách giảm thiểu việc lặp lại
mã.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


13
Thực hiện:
-

Tham gia đầy đủ các buổi trainning.

-

Làm các bài tập thực hành từ hướng dẫn của tài liệu.

-

Tìm kiếm tài liệu trên mạng để tìm hiểu thêm.

Kết quả:
-

Hiểu được những khái niệm cơ bản về API.

-

Xây dựng được một máy chủ có các API đơn giản với FastAPI.


-

Hiểu hơn về lập trình Web Back-end.

2.4. Nghiên cứu tài liệu và những kỹ thuật về Docker
Thời gian: 2 ngày.
Nội dung: Các kiến thức cơ bản về Docker.
-

Docker container.
Là một quy trình sandboxed trên máy chủ, quy trình này được tách biệt khỏi tất cả
các quy trình khác trên máy chủ.

-

-

Là một thể hiện của một image.

-

Có thể chạy trên máy cục bộ, máy ảo hoặc triển khai trên cloud.

-

Có thể triển khai trên mọi hệ điều hành.

-


Được tách biệt khỏi các container khác và thực thi mơi trường của riêng mình.

Container image.
Khi tạo một container, nó sử dụng một hệ thống các tệp bị cô lập. Hệ thống tệp
tùy chỉnh là container image. Vì image chứa hệ thống tệp của container nên nó phải
chứa mọi thứ cần thiết để thực thi ứng dụng - tất cả các phụ thuộc, cấu hình, tập lệnh,

Mentor: Phạm Xuân Bách

Trương Gia Thạch


14
tệp nhị phân,... Image cũng chứa cấu hình khác cho container, chẳng hạn như biến
môi trường, lệnh mặc định để chạy, và siêu dữ liệu khác.
-

Docker Compose.
-

Là một công cụ được phát triển để giúp xác định và chia sẻ các ứng dụng đa
container. Với Compose, có thể tạo một tệp YAML để xác định các service và chỉ
với một lệnh duy nhất, có thể xoay chuyển mọi thứ hoặc phá bỏ tất cả.

Thực hiện:
-

Tham gia đầy đủ các buổi training.

-


Containerize máy chủ với FastAPI đã tạo trước đó.

-

Quản lý các container đã tạo bằng Docker Compose.

Kết quả:
-

Nắm được các kiến thức cơ bản về Docker.

-

Biết cách tạo container image và quản lý chúng bằng Docker Compose.

2.5. Thực hành xây dựng máy chủ API cho dự án Lottery Website
Thời gian: 1 tháng.
Nội dung: Thực hành các kiến thức đã học và tìm hiểu được để xây dụng một máy chủ
API theo yêu cầu của người hướng dẫn.
Kết quả: Xây dựng được một máy chủ API đáp ứng được những yêu cầu đặt ra.
3. Thực hiện project
Sau một tháng được training và thực hành, thực tập sinh đã nắm được những kiến
thực cơ bản về API, Python, FastAPI, Docker. Trong tháng thứ hai, trainer đã hướng dẫn

Mentor: Phạm Xuân Bách

Trương Gia Thạch



15
thực tập sinh áp dụng những kiến thức đã học để tham gia thực chiến dự án mới của công
ty.
Chi tiết thực hiện dự án sẽ được nói ở phần sau.
4. Lịch làm việc

Tuần

Cơng việc

Người hướng dẫn

Tìm hiểu về cơng
ty, cách tổ chức của
công ty.
- Làm quen với các
công cụ làm việc
trong công ty.
- Học cách trao đổi,
làm việc qua email,
Slack, Jira.
- Tìm hiểu ngơn ngữ
lập trình Python
nâng cao.
- Thực hành Python.
- Làm ứng dụng
demo.
- Tìm
hiểu
về

FastAPI.
- Tìm
hiểu
về
FastAPI.
- Làm ứng dụng
demo với FastAPI.
- Tìm hiểu Docker.
Lottery Website spring
1:
- Đọc tài liệu, đọc mã

Anh Phạm Xuân
Bách, Đặng Hải
Thịnh.

-

1

2

3

4

5

Mentor: Phạm Xuân Bách


Mức
độ
hoàn
thành

Nhận xét của người
hướng dẫn

Anh Phạm Xuân
Bách.

Anh Phạm Xuân
Bách.
Anh Phạm Xuân
Bách.

Anh Phạm Xuân
Bách.

Trương Gia Thạch


16

6

7

8


nguồn dự án.
- Tham gia Meeting.
- Chạy thử dự án.
- Tạo các API của
task
Distributor
channel.
Lottery Website spring
1(tiếp):
- Viết hàm xử lý gửi
hình ảnh.
- Xử lý pagination,
filter cho API.
- Testing API.
Lottery Website spring
1(tiếp):
- Viết các hàm xử lý
business logic.
- Migrate database.
- Tạo các API của
task Agency.
- Testing API.
Lottery Website spring
1(tiếp):
- Hỗ trợ front end
testing các API trên
giao diện.
- Testing trên phiên
bản deployment.
- Xử lí Plugout API

dự án Vict-Module
- Báo cáo cuối đợt
thực tập.

Mentor: Phạm Xuân Bách

Anh Phạm Xuân
Bách.

Anh Phạm Xuân
Bách.

Anh Phạm Xuân
Bách.

Trương Gia Thạch


17

Chương 3. Chi tiết về project
1. Giới thiệu về project
Lottery là một nền tảng hỗ trợ quản lí đại lí và các chiến dịch quảng bá, khuyến mại
của doanh nghiệp. Lottery bao gồm cả nền tảng ứng dụng mobile (Android/IOS) và web.
2. Các công việc đã làm
2.1. Cài đặt, chạy thử dự án

Nội dung: Clone source code và chạy thử dự án.
Thực hiện:
-


Cài đặt Docker, Git và đăng nhập Gitlab.

-

Đọc tài liệu về dự án và tài liệu hướng dẫn.

-

Cài đặt pre-commit.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


18
2.2. Tạo API của Distributor channel:

Nội dung: Tạo API của Distributor Channel.
Thực hiện:
-

Đọc tài liệu yêu cầu của task.

-

Tạo model, schema, router.

-


Migrate database.

-

Testing API.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


19
2.3. Xử lý Agency API, resource

Mentor: Phạm Xuân Bách

Trương Gia Thạch


20

Nội dung: Viết các API của Agency trong máy chủ theo yêu cầu của tài liệu. Tạo
template tương ứng với các sự kiện. Tạo các API và hàm xử lí cho các resource sử dụng
trong dự án.
Thực hiện:
-

Đọc tài liệu yêu cầu của task.


-

Viết hàm xử lý API.

-

Đọc code và thêm hàm xử lí vào các API.

-

Viết hàm xử lí cho resource.

-

Tạo model và migration cho ứng dụng.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


21
-

Tạo template email tương ứng với các sự kiện.

2.4. Một số công việc khác
-

Testing API.


-

Xử lý pagination, filter cho API.

-

Tạo API Plug out container cho dự án Vict-Module.

3. Kết quả
Xây dựng thành công các API theo yêu cầu của người hướng dẫn.

Mentor: Phạm Xuân Bách

Trương Gia Thạch


22

TÀI LIỆU THAM KHẢO
- Python Tutorial – [Lần truy
cập cuối: 20/12/2022].
- FastAPI Documentation – [Lần truy cập cuối:
20/12/2022].
- Pydantic Documentation – [Lần truy cập cuối:
20/12/2022].
- Starlette Documentation – [Lần truy cập cuối:
20/12/2022].
- Awesome FastAPI, A curated list of awesome things related to FastAPI –
[Lần truy cập cuối: 20/12/2022].

- FastAPI

Best

Practices



/>
practices [Truy cập lần cuối: 20/12/2022].
- Docker Guides – [Lần truy cập cuối:
20/12/2022].
- Python-emails Documentation – />[Lần truy cập cuối: 20/12/2022].

Mentor: Phạm Xuân Bách

Trương Gia Thạch


23

TỔNG KẾT

Như vậy, sau 2 tháng thực tập tại TISOHA, em đã học được nhiều kinh nghiệm bổ
ích về lập trình back-end web với FastAPI cũng như Docker và hồn thành các nhiệm vụ
được giao. Nhờ đó, em đã hiểu được quy trình phát triển của một dự án, đồng thời hiểu
được trải nghiệm làm dự án thực tế, tăng kĩ năng giao tiếp, xử lí tình huống.
Chân thành cảm ơn Công ty TNHH Giải pháp Phần mềm TISOHA đã tạo điều
kiện cho em được thực tập tại công ty. Đặc biệt cảm ơn sự giúp đỡ của các anh nhóm
trainer TISOHA đã giúp đỡ tận tình cho em trong thời gian thực tập tại công ty.


Mentor: Phạm Xuân Bách

Trương Gia Thạch



×