Tải bản đầy đủ (.doc) (29 trang)

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

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.24 MB, 29 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 MARK PLATFORM
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 Văn Lượng

Thực tập sinh

: Đặng Hải Thịnh

Phạm Văn Lượng
Đặng Hải Thịnh


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

Phạm Văn Lượng
Đặng Hải Thịnh



3

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.

Phạm Văn Lượng
Đặng Hải Thịnh


4


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 Văn Lượng, đã 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 Phan Đại Dương
và anh Nguyễn Văn Biên, đã 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á đã tạo văn hóa cơng ty lành mạnh, chun 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.
Đặng Hải Thịnh
TpHCM, ngày 17 tháng 12 năm 2022

Phạm Văn Lượng
Đặng Hải Thịnh


5

NHẬN XÉT CỦA KHOA

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

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

Phạm Văn Lượng
Đặng Hải Thịnh


6

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......................................................................................8
1.

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

2.

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

Các cơng cụ làm việc.................................................................................................8

2.2.

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

2.3.

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

2.4.

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

2.5.

Thực hành xây dựng máy chủ API cho dự án Mark Platform.................................13


3.

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

4.

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

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

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

2.

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

3.

2.1.

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

2.2.

Tạo API của task Permission...................................................................................17

2.3.

Xử lý gửi email và template email............................................................................18


2.4.

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

KẾT QUẢ...........................................................................................................................19

TÀI LIỆU THAM KHẢO.........................................................................................................20

Phạm Văn Lượng
Đặng Hải Thịnh


7
TỔNG KẾT.................................................................................................................................21

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.


Phạm Văn Lượng
Đặng Hải Thịnh


8
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í.

Phạm Văn Lượng
Đặng Hải Thịnh


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 Mark
Platform” 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.


Phạm Văn Lượng
Đặng Hải Thịnh


10
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, quá 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ư
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 số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

Phạm Văn Lượng
Đặng Hải Thịnh


11
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.

-

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.

Phạm Văn Lượng
Đặng Hải Thịnh


12
-

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.

-

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.

Phạm Văn Lượng
Đặng Hải Thịnh



13
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ã.

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.


Phạm Văn Lượng
Đặng Hải Thịnh


14
-

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,
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ả.

Phạm Văn Lượng
Đặng Hải Thịnh


15
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 Mark Platform

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
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

Mức
độ
hồn

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

Phạm Văn Lượng
Đặng Hải Thịnh


16
thành
-

1

2


3

4

5

6

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.
Mark Platform spring 1:
- Đọc tài liệu, đọc mã
nguồn dự án.
- Tham gia Meeting.
- Chạy thử dự án.
- Tạo các API của
task Permission.
Mark Platform spring
1(tiếp):
- Viết hàm xử lý gửi
email.
- Xử lý pagination,

Anh Nguyễn Văn
Biên, Phan Đại
Dương.

Anh Phạm
Lượng.

Văn

Anh Phạm
Lượng.
Anh Phạm
Lượng.


Văn

Anh Phạm
Lượng.

Văn

Anh Phạm
Lượng.

Văn

Văn

Phạm Văn Lượng
Đặng Hải Thịnh


17
filter cho API.
- Testing API.
Mark Platform spring
1(tiếp):
- Viết các hàm xử lý
business logic.
- Migrate database.
- Tạo các API của
task
Designer

profile.
- Testing API.
Mark Platform spring
1(tiếp):
- Bắt các sự kiện cần
gửi email theo tài
liệu và chỉnh sửa
template mail tương
ứng.
- Testing gửi email.
- Báo cáo cuối đợt
thực tập.

7

8

Anh Phạm
Lượng.

Văn

Anh Phạm
Lượng.

Văn

Chương 3. Chi tiết về project
1. Giới thiệu về project
Mark Platform là một nền tảng đánh giá và khám phá dành cho các nhà thiết kế nội

thất ở Singapore. Mark Platform bao gồm cả nền tảng ứng dụng mobile (Android/IOS)
và web.

Phạm Văn Lượng
Đặng Hải Thịnh


18
2. Các công việc đã làm
2.6. 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.

Phạm Văn Lượng
Đặng Hải Thịnh


19

2.7.

Bắt sự kiện và gửi thông báo

Phạm Văn Lượng
Đặng Hải Thịnh


20

Nội dung: Bắt các sự kiện và gửi thông báo đến thiết bị của người dùng .
Thực hiện:
-

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

-

Tìm hiểu các phương thức để gửi thơng báo.

-

Thảo luận với nhóm đảm nhận mảng mobile.

-

Viết hàm xử lí thơng báo.

-


Test api với bên mobile

Phạm Văn Lượng
Đặng Hải Thịnh



×