DANH MỤC TÀI LIỆU
API và những điều cần biết
API và nh ng đi u c n bi t ề ầ ế
Hi n nguyên lý REST và c u trúc d li u RESTful ữ ệ đ c bi t đ n r t ượ ế ế
r ng rãi trong gi i l p trình, nh ng v n có nhi u ng i hay nh m l n. B n ớ ậ ư ườ
thân REST không ph i là m t lo i công ngh , mà là ộ ạ ph ng th c t o APIươ ứ ạ
v i nguyên lý t ch c nh t đ nh . Nh ng nguyên lý này nh m h ng d n ằ ướ
l p trình viên t o môi tr ng x API request đ c toàn di n h n. ườ ượ ệ ơ
Trong bài vi t này, tôi s gi i thích m t s ph ng th c phát tri nế ươ RESTful
góc nhìn toàn c nh nh t, đ ng th i làm rõ khái ni m REST APIs. Tôi s ấ ồ
t p trung vào câu h i “l p trình cái gì” h n là “l p trình nh th nào” ơ ư ế .
REST For Web Developers
REST là vi t t t c aế Representational State Transfer. Gi i thích đ n ả ơ
gi n, REST là m t lo t h ng d n và d ng c u trúc dùng cho vi c ướ ạ ấ
chuy n đ i d li u . Thông th ng, REST hay đ c dùng cho ng d ng ườ ượ ứ ụ
web, nh ng cũng có th làm vi c đ c v i d li u ph n m m.ư ượ ữ ệ
API là vi t t t c a Application Programming Interface, ph ng th cế ươ k t ế
n i v i các th vi n và ng d ng khácố ớ ư ệ . Windows có nhi u API, và
Twitter cũng có web API, tuy chúng th c hi n các ch c năng khác nhau, v iự ệ
m c tiêu khác nhau.
Nhìn chung, RESTful API là nh ng API đi theo c u trúc REST.ữ ấ
C u trúc REST là gì?
Th t khó gi i thích sao cho c th . Tuy nhiên, v n có m t s ộ ố quy lu t b t ậ ấ
bi n, nh :ế ư
S nh t quánự ấ trong c API
T n t i không trang tháiồ ạ (ví d , không có server-side session)
S d ngử ụ HTTP status code khi c n thi tầ ế
S d ngử ụ URL endpoint v i logical hierarchy
Versioning trong URL ch không ph i trong HTTP headerứ ả
S không có b t c h ng d n nào nh W3C HTML5 spec, quá c th ứ ướ ư
đ n m c d n đ n nh m l n, đ c bi t là các nh m l n tai h i quanh thu t ế ế ầ ẫ ầ ẫ
ng REST.
H n n a,ơ b n không nh t thi t ph i tuân theo nh ng quy lu t ế ả
trên không sai m t ch (dù qu th t đó là nh ng quy lu t quan tr ng c a ả ậ
RESTful API hi n đ i).ệ ạ
RESTm t ph ng th c nh g n ươ . Nên r t đ c a chu ng cho d ượ ư
li u HTTP. Cũng vì v y nên REST d n ph bi n trên web, và đ c xem là ổ ế ượ
l a ch n “s m t” cho phát tri n API. ố ộ
Theo nh ư Vinay Sahni đã nói, “API chính là UI c a l p trình viên.” M i ủ ậ
th ph i d dùng, v i tr i nghi m t t. Và đây chính là m c tiêu RESTful ả ể
APIs h ng đ n.ướ ế
C n chú ý v i RESTful APIsầ ớ
Nh ng tip d i đây ướ dành riêng cho API trong môi tr ng ng d ng ườ ứ
web. Đ ng nghĩa r ng HTTP là b t bu c , và d li u API s th ng ẽ ườ
đ c host trên external serverượ . Hãy xem th RESTful API làm vi c nh ệ ư
th nào bên phía ng i dùng API.ế ườ
Ng i dùng API là l p trình viên web có th build m t script k t n i đ n ườ ế ố ế
m t external API server, r i d li u c n thi t s chuy n sang HTTP. L p ữ ệ ế
trình viên khi đó có th hi n th d li u lên website mà ị ữ không c n đ n ầ ế
truy c p cá nhân vào external server.
Nhìn chung, có b n l nhố ệ dùng đ truy c p RESTful API:
1. GET đ truy v n objectể ấ
2. POST đ t o object m iể ạ
3. PUT đ s a đ i ho c thay th m t objectể ử ế
4. DELETE đ lo i b m t objectể ạ ỏ ộ
M i ph ng th c trên ph i ươ đ c API call thông quaượ đ g i ch th cho ể ử
server ph i làm gì.
Đ i đa s web APIạ ố ch cho phép GET request l y d li u kh i m t ữ ệ
externer server. Authencation không b t bu c, nh ng nên có khi ta cho phép ắ ộ ư
các l nh khá “nguy hi m” nh PUT hay DELETE. ể ư
Tuy nhiên, r t ít th y RESTful API nào cho phép các l nh này. Ví d ấ ấ
như http://pokeapi.co/, Pokemon API database mi n phí, v i l ng rate limit ớ ượ
công khai kha khá (rate limit: ng i dùng b gi i h n s ki u API request ườ ị ớ ạ ố ể
th c hi n đ c), nh ng ch cho phép ph ng th c ượ ư ươ GET đ truy c p tài ể ậ
nguyên. Trong “dân gian” ta hay g i ki u gi i h n này là ớ ạ consumption-only
API.
Return type cũng r t quan tr ng, và nên d ng nh t v i t t c tài nguyên. ớ ấ
JSON cũng là m t return type n i ti ng, v i ế online specs gi i thích đúng
c u trúc d li u. ữ ệ
RESTfull API dùng danh t cho API object, và đ ng t đ th c hi n ừ ể
hành vi lên nh ng object này.
Truy c p API Resources
Public API th ngườ truy c p đ c t đ a ch website tr c ti p ượ ế . Nói cách
khác, c u trúc URL r t quan tr ng , ch nên dùng cho API request.
M t s URL có th bao g m đ ng d n ti n t nhộ ố ườ ư /v2/ cho phiên b n 2
c p nh t t API tr c đó; hay th y nh ng l p trình viên mu n gi 1.x ướ ấ ở
API, nh ng v n mu n cung c p c u trúc m i nh t.ư ấ ấ
Nên nh , return data endpoint s thay đ i m nh m d a vào ẽ ự ph ng ươ
th c HTTP. Ví d , GET tr n i dung, cònả ộ POST t o n i dung m i. ạ ộ
Request có th ch đ n cùng m t endpoint, nh ng k t qu có th r t khác. ế ư ế ể ấ
Đ hi u rõ khái ni m này, các b n có th lên tìm nhi u ví d online khác. ể ể
Ngoài Pokeapi, ta còn có:
Reddit API
GitHub API
Flickr API
Pinterest API
T build API
Quá trình xây d ng m t API riêng không d dàng, nh ng cũng không quá ự ộ ư
ph c t p nh nhi u ng i nghĩ.ứ ạ ư ườ
M i API ph i k t n i đ n serverế ố ế đ tr d li u. B n không nh ng ph i ả ữ
vi t code đ làm đi u đó, mà còn ph i format return data n a. M t s yêu ế ộ ố
c u khác có th g m ể ồ authentication rate limiting.
Hãy đi m qua m t s nguyên lý c b n ơ c a c u trúc API.ủ ấ
Build Endpoints
building endpoint là m t ph n quan tr ng trong quá trình phát tri n API.
Khi t o tài nguyên b n s mu n dùngạ ẽ danh t đ y, d ng dùng đ ng t . ừ ấ
Nói cách khác d li u API ph i tr k t qu là ng i, n i ch n, ho c “th ả ế ườ ơ
gì đó. Thông th ng, b n s nh n m tườ “th ” v i thu c tính c th ụ ể (ví
d nh tweet và metadata).ụ ư
Tên danh t là m t ph n c c kỳ quan tr ng khi phát tri n API, dù r t khó
h c. Nên hãy c g ng càng đ n gi n càng t t ố ắ ơ
V n đ đáng tranh cãi đây làấ ề danh t s ít hay s nhi u . N u b n đang ế ạ
t o API Twitter, b n nên có object group tr c (nh : tweet), r i object item ướ ư
sau (nh : tweet ID).ư
1
2
$ /tweet/15032934882934
$ /tweets/15032934882934
Trong tr ng h p này, tôi cho r ng th s ít s d nhìn h n, đ c bi t khi ườ ể ố ơ
ch tr m t tài nguyên.ỉ ả
Đ t Return Type
thông tin tài liệu
Hiện nguyên lý REST và cấu trúc dữ liệu RESTful được biết đến rất rộng rãi trong giới lập trình, nhưng vẫn có nhiều người hay nhầm lẫn. Bản thân REST không phải là một loại công nghệ, mà là phương thức tạo API với nguyên lý tổ chức nhất định.
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×