You are on page 1of 58

Copyright IBM Corporation 2009 Nhn hiu ng k

Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v


RESTful cho ng dng Web ca bn
Trang 1 ca 58
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc
dch v RESTful cho ng dng Web ca bn
To, lp ghp v trin khai cc ng dng hin i vi nn tng mnh m
m n gin
Roland Barcia (barcia@us.ibm.com)
Nhn vin k thut cao cp
Systems Documentation, Inc. (SDI)
Steve Ims (steveims@us.ibm.com)
K thut vin cao cp
Systems Documentation, Inc. (SDI)
20 05 2009
Trong lot bi ny, hc tt c v IBM WebSphere sMash ca IBM, mt mi trng n gin
cho vic to lp, lp ghp v thc thi cc ng dng da trn cc cng ngh Web hin nay. Trong
bi u tin ny, tri nghim thc tp nhng phng php mi m cho php bn to lp, lp
ghp v trin khai cc ng dng Web mnh m. Hc WebSphere sMash mang tnh hng cng
ng nh th no v v cc quy c ca chng to ra cc dch v RESTful Web. S dng
mt v d tng bc mt, bn ci t mi trng, to mt d n, xy dng mt dch v RESful
th hin d liu, kim tra ng dng ca bn, v a vo mt ng dng mu s dng cc
dch v RESful.
Ghi ch ca ngi bin son: Khi bi bo ny ln u tin c pht hnh, n da trn m ca
mt d n c p c tn l Project Zero. Ti thi im , ci tn Project Zero c hiu l b
m v cng ng. B m hin vn ang tn ti nh mt sn phm c tn gi l IBM WebSphere
sMash. Project Zero ngy nay c pht trin dng cng ng cho WebSphere sMash v s tip
tc c cung cp cho cc nh pht trin nh mt nn tng min ph pht trin cc ng dng
vi nhng kin trc mi nht, tnh nng mi nht nhm h tr cho cng ng.
Gii thiu
IBM WebSphere sMash c tp trung vo pht trin nhanh cc ng dng Web 2.0 i theo
kin trc hng dch v (Service-Oriented Architecture - SOA). Web 2.0 c p dng cho
SOA cho php cc sn phm Web m rng phm vi ca SOA. Ngh v n nh l RESful SOA.
(Representational State Transfer (REST) l mt dng kin trc.)
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 2 ca 58
RESful SOA l tp con ca SOA tp trung vo Hypertext Transfer Protocol (HTTP) v cc nguyn
tc RESful c bn. RESful SOA ng h s dng cc mu thit k lm nn thnh cng ca Web;
n lm nn ngha v l li ch chung ca chng ta khi i theo cc mu vi cc thit k ng
dng ny. Nhng li ch bao gm:
Kh nng m rng, thng qua thc thi ct gi tm (caching) v cc tng tc phi trng thi.
n gin, vi cc iu kin tin quyt thng thng l HTTP v XML hoc phn tch (parsing)
c php v dch (rendering) JavaScript Object Notation (JSON).
Mt "mng hiu qu" tip cn rng n t cc tiu chun thng thng. V d, cc trang web
c th s dng hoc tng hp Atom hoc cc im ngun (feed) RSS m khng cn bit cc
chi tit thng tin v ni dung.
WebSphere sMash gii thiu mt mi trng n gin cho vic to lp, lp ghp v thc hin cc
ng dng da trn cc cng ngh Web ph bin. Mi trng ca WebSphere sMash bao gm mt
mi trng thc thi kch bn cho Groovy v PHP vi cc giao din lp trnh ng dng c ti u
ha cho vic to ra cc dch v kiu REST, tch hp cc mashup v cc giao din Web.
Mc tiu chnh ca WebSphere sMash bao gm c lnh vc k thut v x hi. Mc tiu k thut
l cung cp mt nn tng c kh nng m rng n gin ha vic pht trin ng dng theo ba
hng quan trng:
To lp
Lm n gin ha vic pht trin cng vi h tr cc ngn ng kch bn (hin ti l Groovy v
PHP), cc quy c pht trin cc mu RESful v cc danh mc ti sn c th ti s dng
li.
Lp ghp
Cho php nhanh chng truy xut v nhm gp cc dch v khc nhau thnh cc ng dng
thng nht, bao gm cc lung d liu, bin son phi hp v cc iu chnh ty chn.
Trin khai
Cung cp mi trng thc thi ng dng trung tm da trn my o Java (JVM) va c
bit rng ri v va n nh, n c ti u cho qu trnh pht trin nhanh (bn thit k nh,
khi ng li nhanh).
Cc mc ch x hi ca lin quan n qu trnh pht trin ca n. WebSphere sMash ang
c pht trin trong mi trng m nh l pht trin mang tnh thng mi hng cng ng
(community-driven commercial development - CD/CD). Project Zero l mt cng ng pht trin
cho WebSphere sMash. Cng ng ngi s dng cng c th quan st v c nhng nh hng
n quyt nh k thut cho WebSphere sMash. Nhng ngi dng cng truy cp trc tip ti i
pht trin v m ngun ca n. Mc trong sut ny cho pht trin phn mm thng mi l mt
iu mi m i vi IBM; n dn n vic cung cp c hiu qu cao.
i cng vi CD/CD, tt c cc thng tin v WebSphere sMash ph hp vi CD/CD c
projectzero.org. Lot bi ny s khng tit l thng tin mi v WebSphere sMash, nhng s a ra
ch dn mang tnh cu trc cho cc khi nim c bn.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 3 ca 58
Cc dch v RESTful
REST m t mt mu thit k thc thi cc h thng ni mng. REST khng phi l mt cng
ngh cng chng phi l mt chun; n l mt dng kin trc th hin ra cc ti nguyn thng
qua Web. Kin trc RESful gn vi mt lot cc nguyn tc sau:
Cc li yu cu (request) l khch-ch (client-server) v mt cch t nhin s dng kiu
tng tc da trn ko (pull). Cc thnh phn tiu th ko nhng i din ca trng thi xung
t my ch.
Cc li yu cu l phi trng thi. Mi li yu cu t my khch ti my ch phi cha mi
thng tin cn thit hiu li yu cu v khng th tn dng c bt k ng cnh c
lu trn my ch.
REST khng nht thit phi c trng thi tng trung gian; trng thi thi hnh li yu cu cho
mt ti nguyn khng ph thuc vo trng thi .
Cc my trm v my ch u tun th theo mt giao din thng nht. Tt c cc ti nguyn
c truy xut vi mt giao din chung trong th gii ca SOA Web m rng - HTTP cng vi
cc phng thc ca HTTP: GET, POST, PUT, DELETE.
Cc my trm tng tc vi cc ti nguyn c t tn. H thng cu thnh t cc ti
nguyn c t tn bng cch s dng mt a ch URL, chng hn nh mt HTTP URL.
Chuyn trng thi c trng (Representational State Transfer - REST) l mt kiu kin trc
phn mm cho cc h thng siu phng tin (hypermedia) phn tn, chng hn nh mng
ton cu (WWW).
REST l cng ngh then cht biu din cc dch v trn Web. iu quan trng l cn phi hiu
rng REST lm vic tt nht khi n bc l cc dch v da trn d liu. Cc dch v d liu ny sau
c th c trn ln v la chn xy dng cc ng dng mi (thng c gi l mashup).
V d di y s cho ta thy mt my khch nhn mt dch v RESful nh th no.
vi http://<host>/customer:
GET: Tr v danh sch cc khch hng
POST: To mt bn ghi khch hng
Vi http://<host>/customer/roland:
GET: Tr v bn ghi khch hng Roland
PUT: Cp nht bn ghi Roland
DELETE: Xa bn ghi Roland
Trong v d ny, ti nguyn c bc l l Khch hng (Customer). Khch hng c biu din
bi URL/customer. Cc khch hng c th c biu din bng cch chn mt nh danh vo
Customer, chng hn nh /customer/ims. Cc phng thc tiu HTTP xc nh mc ch truy
cp ti nguyn.
Thit k trung tm-ng dng so vi trung tm-my ch
Trong cc doanh nghip, cc nn tng (chng hn nh cc my ch da trn Java EE) tun theo b
t duy trung tm-my ch. Cc ng dng Web c xy dng v trin khai trn nn tng ng dng
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 4 ca 58
my ch. Nhng nn tng ca my ch, chng hn nh WebSphere, c th cung cp tt c cc c
tnh ca dch v m c t Java EE yu cu. Cc v d ca cc dch v ny bao gm cc thng ip
kiu hng i, giao tc phn tn hoc qun l giao thc. Thng thng, my ch phc v ng dng
chy mt lot cc ng dng trn cng mt JVM (my o Java). Cc kin trc s thit k cc ng
dng xung quanh khi nim chia s phn mm v ti nguyn d liu vi cc ng dng, vi cc dch
v c cung cp bi cc my ch ng dng (thm ch nu chng khng c dng trong mt s
trng hp)
Thm ch nu cc ng dng c trin khai ti cc my ch ng dng c lp, th chnh cc my ch
vn t n thng xuyn tin hnh tt c cc dch v c sn. Cc ng dng my ch cho php
tch hp cp doanh nghip. c im ca tch hp doanh nghip l cc giao tc phn tn trn cc
h thng khc nhau, cc thng ip da trn hng i cho vic phn phi d liu quan trng, hay
cc kiu khc ca cc dch v. Nn tng trong doanh nghip c thit k xung quanh qun l cc
giao thc qun l v cc phn mm trung gian (middleware). i khi h ni v c s d liu doanh
nghip phc v cho nhiu ng dng.
Th gii ca Web 2.0 bao gm mt lp tch hp khng qu ct yu mc HTTP. Cc ng dng
thng c thit k quanh mt b d liu, iu ny c ngha l n c th c bc l v pha trn
vi cc b d liu khc, to ra cc ng dng mi m c l cc nh cung cp d liu khng d
on trc c. Bn xy dng cc ng dng v chy n. Bn khng ng gi mt ng dng v
trin khai n vo mt my ch a ng dng, ging nh mt tp WAR nm trong mt b cha JEE
khc. Mi ng dng chy trn tin trnh ring ca nJVM.
Phn 2 ca lot bi s tho lun v vic thit k chi tit hn.
Mi trng thc thi WebSphere sMash c thit k c vng i ngn v h tr cc mu nh l ti
s dng sau mi yu cu hoc khi thi gian nhn ri vt qu hn. Tt c mi th cn thit chy
cc ng dng c xy dng vo trong tin trnh, bao gm c ngn xp HTTP. Khng mt proxy
(trnh y nhim) ngoi hoc my ch Web no c yu cu, mc d mt proxy ngoi c s dng
phn cm v nh tuyn a ng dng.
Cc khi nim lp trnh ct li ca WebSphere sMash
WebSphere sMash l mt nn tng mi, nn tng c bit m n sp hng Web 2.0 v SOA h
tr cc th h k tip ca cc cc ng dng nghip v da trn n. Phn ny bao gm mt s khi
nim ct li. Cun Developer's Guide cung cp chi tit hn v cc khi nim.
Kch bn (Scripting) v Java nh l ngn ng h thng
Cc ngn ng kch bn l mt xu hng ch o trong s pht trin c n gin ha.
WebSphere sMash hng ti vic gim chi ph dch v pht trin bng cch cung cp cc API n
gin xung quanh cc kch bn (scripting). Ngn ng kch bn mc nh l Groovy, l ngn ng
da trn Java v cho php cc lp trnh vin Java d dng chuyn i sang Groovy. Qua mt m-
un m rng, WebSphere sMash cng h tr PHP nh l mt ngn ng kch bn.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 5 ca 58
Cc s kin
WebSphere sMash l mt h thng da trn s kin. Tt c cc hnh ng chnh ca h thng
c bc l cho cc ng dng nh l mt tp cc s kin, vi cc trng thi s kin thch hp.
Ging nh mt nh pht trin ng dng, cng vic chnh ca bn l cung cp mt tp cc b x
l m gn c vo cc s kin h thng quen thuc c c hnh vi ng dng mong mun.
Nhng s kin chun l cc hnh ng c ngha, chng l s quan tm i vi cc ng dng.
V d, mt li yu cu HTTP qua h thng gy ra tp cc s kin. Bn c th vit cc b x l
(handler) cho cc s kin ny. Hnh 1 ch ra khi nim ny, vi cc c hi gn vo s kin x
l cc kha cnh an ninh, hoc mt s kin phng thc HTTP (v d nh GET hoc POST) c
bit. Xem thm phn x l s kin Ch dn ca nh pht trin.
Hnh 1. Cc s kin
Bn c th vit trnh x l s kin bng nhiu cch, ging nh l v d c trnh by hnh 2. Nu
bn s dng mt ngn ng kch bn chng hn nh Groovy hoc PHP, bn s khng nht thit phi
cung cp vic ng k trnh x l bi v WebSphere sMash cung cp rt nhiu cc quy c gim
thiu hoc loi b vic khai bo. Bn c th cc kch bn trong nhng th mc nht nh, v
WebSphere Smash s t ng ng k chng nh cc trnh x l.
V d, cc kch bn hnh 2 c t trong th mc tn l public, ni c th p ng nh l mt p
ng gc ca trang Web. Nu tp kch bn c gi l hello.groovy th ngi s dng c th gi mt
phng thc HTTP GET trn http://<host>/hello.groovy. S kin GET s c sinh ra v trnh x
l onGET c gi. Lu rng kch bn u tin trong hnh khng c t trong mt phng thc
iu khin s kin no. Bi v n c t trong th mc Public, WebSphere sMash s gi kch bn
tr li bt k mt phng thc HTTP no. Cc quy c s c m t phn sau trong bi vit
ny.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 6 ca 58
Hnh 2. Cc v d v trnh x l s kin
Ng cnh tng th
Cc trnh x l s kin trong WebSphere sMash khng c cc tham s u vo v u ra tng
minh, chng hn nh l cc thng tin yu cu v phn hi. Bi v cc trnh x l s kin trong
WebSphere sMash mang tnh phi trng thi v khng duy tr trng thi ca bin thng qua cc li
gi, WebSphere sMash cung cp ng cnh tng th nh l mt phng tin truy cp v duy tr
tt c cc trng thi. Ng cnh tng th cung cp mi d liu quan tm v s kin hin thi cho ng
dng v c ch lu v chia s thng tin gia cc thnh phn ca ng dng.
Ng cnh tng th c phm vi ha v chia thnh tp cc vng. Mi khu vc duy tr d liu vi
nhng tnh minh bch khc nhau v vi nhng vng i khc nhau, ging nh c th hin trong
hnh 3. V d, vng ngi s dng cha cc trng thi phin (session) cho mt my khch c
nh trc, n ch hin r i vi my khch , v duy tr d liu cho n khi ngi s dng tr
thnh khng hot ng.
Vng yu cu cha trng thi ca li yu cu ang c kch hot (active request), n ch nhn thy
c i vi cc thnh phn thi hnh yu cu , v trng thi c duy tr cho n khi kt thc
yu cu .
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 7 ca 58
Hnh 3. Ng cnh tng th
Trong WebSphere sMash c by vng. Mt s vng khng lu tr (nonpersistent) nh c miu
t trong bng 1. N ch trong b nh v khng tn ti khi khi ng li.
Bng 1. Cc vng khng lu tr
Vng M t
Config D liu trong /config c ti vo cc tp cu hnh. D liu c th c
nhn thy phm vi tng th v hiu lc i vi sut vng i ca ng
dng. Vng config c c sa nhng cc thay i s b mt i lc khi
ng li JVM khi m cc ni dung c thit lp li t cc tp khai bo.
Request D liu trong vng /request c th nhn thy c i vi cc lung
x l yu cu HTTP. Vng yu cu c hiu lc t thi im li yu cu
(request) vo trong h thng cho n khi li phn hi c gi ra
Bn c th thy n ging nh lp trnh servlet, nh m vng
yu cu cung cp s kt hp cc chc nng c cung cp bi
HttpServletRequest v HttpServletResponse. N bao gm vic truy
nhp d liu n: cc tham s yu cu, tiu , cc cookie, POST body
v dng d liu nhn v gi i: cc tiu gi i, cookies gi i...
Event D liu trong /event nhn thy c i vi cc lung x l s kin trong
sut thi gian ca s kin . WebSphere sMash cung cp framework
(khung lm vic) x l s kin cho php cc thnh phn kt ni vi nhau
mt cch lng lo xut v dng cc s kin .
Nu mt s kin c gi n nhiu trnh x l s kin th tt c cc
trnh x l c th truy cp n d liu s kin gc t vng s kin
Tmp D liu trong vng /tmp c th nhn thy c mc tng th i vi tt
c cc lung ca mt ng dng. N cung cp mt vng m hn tp m
cc ng dng c th s dng lu tr bt k cc i tng no.
Vi cc vng lu tr, nh c m t trong bng 2, d liu vn tip tc tn ti khi JVM khi ng
li
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 8 ca 58
Bng 2. Cc vng lu tr
Vng M t
User D liu trong vng /user nhn thy c i vi tt c cc lung d liu
ca mt phin (session) HTTP. Phin HTTP c nh danh bng gi
tr cookie zsessionid tm thy trong li gi. Khu vc ngi dng c
gi qua cc qu trnh phc hi li my ch. Ni dung ca cc vng ny
c tun t ha (serialized) bng cch s dng Java serialization; ch
c cc i tng c tun t ha mi c t trong n.
Mt phin HTTP qu gi (time out) sau mt khong thi gian khng
hot ng. Thi gian timeout nhn ri c cu hnh bo qua setting/
config/userZoneIdleTimeout trong tp zero.config. Phin lm vic cng
time out v khng cn hiu lc sau khi cookie kt thc (ht hiu lc)
App D liu trong vng /app c th nhn thy mc tng th i vi mi
lung ca mt ng dng. N cung cp mt vng nh m cho cc ng
dng dng lu tr cc i tng c th tun t ha (serializable).
Storage D liu trong vng ny c th nhn thy mc tng th i vi mi
lung ca mt ng dng. Vn tip tc tn ti trong sut qu trnh ti ch
ca my ch. N cung cp mt vng nh m cho cc ng dng dng
lu tr i tng d liu c tun t ha nh l cc kiu JSON, th
m bao gm List, Map, String, Double, Long, Boolean v null. Vng ny
lu thng qua qu trnh khi phc v khi ng li cc my ch.
Ng cnh tng th c sn t tt c cc phn ca mt ng dng. Phng thc truy nhp ph thuc
vo ngn ng s c s dng. Java API i vi GlobalContext xc nh cc tnh cht truy cp.
Cc lin kt cung cp cho API thng qua Groovy v PHP. V d, bin request l gn lin vi vng
yu cu, iu c ngha l bn c th s dng mt k hiu chm nh l request.myData truy
cp vng yu cu myData. Ng cnh tng th ging nh mt bn truy cp thng qua cp kha-
gi tr. Bn c th ly, t, lit k v xa cc kha khc nhau t ng cnh tng qut. Hnh 4 s a
ra mt vi v d lm th no cc trnh x l s kin c th truy cp GlobalContext.
Hnh 4. Truy cp ng cnh tng th
Ng cnh tng th h tr ng dn gi tr, th m truy cp trc tip vo cc kiu i tng c th.
V d bn c th truy cp mt danh sch thnh phn vi zget("/request/myList#3"), hoc gi tr
ca key nm trong mt bn dng zget("/request/myMap#key").
Cc quy c v cu trc th mc ng dng
Mi trng WebSphere sMash cung cp mt vi nhng quy c m c th lm n gin s pht
trin ca cc ng dng WebSphere sMash v lm ti thiu ha cc thng tin cu hnh cn c ch
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 9 ca 58
ra. Mt trong nhng mc tiu ca WebSphere sMash l cng t thng tin cu hnh th cng tt. Mt
s quy c th ph bin v c mong i. V d, bn c th t mt kch bn ca ca ng dng ca
bn trong th mc public, v chy kch bn khi hi p mt ti nguyn HTTP m khng cn d liu
khai bo. Hnh 5 a ra mt s v d ca mt kch bn tn l hello.groovy vi mt phng thc iu
khin s kin cho s kin GET. Kch bn ny s c thc hin khi GET c gi vo a ch http://
<application_host>/hello.groovy
Hnh 5. Th mc public
Nhng quy c khc ph hp hn vi mt mu c bit. Hnh 6 trnh by mt v d v vic lu tr
ca kch bn Groovy c tn l incentive.groovy di mt th mc c bit. Cch tip cn ny s t
ng ng k cc phng thc trong th mc ny p ng cc s kin HTTP REST. Trong bi
vit ny, bn s tm hiu cch mu RESTful c s dng pht trin mt cch nhanh chng cc
dch v RESTful bc l d liu ca bn.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 10 ca 58
Hnh 6. Th mc o ha cho cc ti nguyn RESTful
Qua vic xy dng v d, cc th mc o ha v ng dng c minh ha. bit thm thng tin,
bn c th tham kho thm trong phn "Virtualized directories" ca cun Developer's Guide.
Ng cnh v d
Bn gn nh sn sng c th xy dng dch v RESTful u tin s dng WebSphere sMash.
u tin, mc d phn ny cung cp cho mt ci nhn tng qut v ng cnh s c s dng trong
lot bi vit ny.
Cc yu cu
Thng qua lot bi vit ny, bn s hc cc khi nim khc nhau thng qua xy dng mt v d
ph bin. Ch ca cu chuyn lin quan n nng lng. Ngi tiu dng mun tit kim chi
ph nng lng. Nh cung cp nng lng a ra cc khuyn khch (incentive) da vo cc mu
nng lng no . Ngi dng nng lng c th l ch nh, cc cng ty v cc thc th khc.
V d, mt cng ty ton cu c th cn xy dng mt ng dng phn x tnh hung nhanh cho php
h tm ra cc khuyn khch s dng nng lng ph hp vi h. H mun xy dng mt ng dng
Web cho php Internet tm kim cc chin lc khuyn khch nng lng c th p dng cho cc
trung tm d liu ca h trn khp th gii.
i vi ngi tiu dng tm kim cc khuyn khch, cc nh cung cp nng lng phi c kh
nng cung cp d liu v khuyn khch thng qua Internet. y l im RESTful SOA tr thnh
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 11 ca 58
then cht. Kh nng c th gii phng ni dung ca bn trong mt c ch RESTful cho php ngi
khc to cc ng dng mi s dng d liu ny. Hnh 7 hin th biu ca s dng (use case) cho
h thng.
Hnh 7. Cc ca s dng cho v d
Trong bi vit ny, bn ng vai tr mt nh cung cp nng lng tn l NJEnergy. Bn s dng
WebSphere sMash bc l v qun l d liu khuyn khch.
M hnh d liu
NJEnergy c mt bng c s d liu n vi d liu khuyn khch ca h, nh l c ch ra trong
hnh 8
Hnh 8. Bng khuyn khch
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 12 ca 58
Mc ch xy dng mt ng dng WebSphere sMash l bc l d liu.
Thit k cc dch v RESTful
By gi, d liu c phc tho, hy bt u bng vic nh x d liu ca bn vo khng gian
tn RESTful. Thng l rt hu ch khi to mt bng cho mt thc th lin quan ti nh x ti
nguyn. Bng 3 trnh by mt v d v nh x RESTful ti ti nguyn v d. Bn s xy dng dch v
RESTful ny.
Bng 3. Cc im cui REST khuyn khch
Ti nguyn URI Phng thc Biu din M t
Incentive list /incentive GET C mt mng JSON cc
i tng v mt im tin
Atom
Ly mt danh sch cc
khuyn khch (incentive)
Incentive /incentive POST i tng JSON To mi mt khuyn khch
Incentive /incentive/<incentiveId> GET i tng JSON Ly mt khuyn khch c
nhn
Incentive /incentive/<incentiveId> PUT i tng JSON Cp nht mt khuyn khch
n
Incentive /incentive/<incentiveId> DELETE Xa mt khuyn khch n
JSON l mt nh dng c la chn trnh by d liu bi v chng ta s s dng mt ng dng
Internet giu (RIA) nh l mt im cui cho h thng. i vi danh sch cc khuyn khch, bn
cng s c cung cp mt ngun tin Atom. Hu ht cc cng c da trn Ajax u hiu JSON rt
tt v Java l ngn ng lp trnh chnh cho Ajax trn trnh duyt. ( tm hiu chi tit hn v JSON
c th c thm Ti nguyn.)
An ninh cho cc dch v RESTful
Sau khi bn xc nh c cc dch v, bn c th bt u gn cht lng cc dch v cho
chng. Cc yu cu phi chc nng c hnh dng v kch c khc nhau. ("Ti sao cc yu cu phi
chc nng li c ngha?" cung cp cch x l tt v mang tnh thc tin i vi cc yu cu
khng phi chc nng.) Vi REST chng ta cung cp cc dch v da trn HTTP, do vic p dng
cc yu cu phi chc nng c n gin ha.
V d s gii quyt v vn an ninh, tc l bn s p dng cc lut an ninh cho cc ti nguyn
REST bng cch bo mt cc URL. Bng 4 trnh by mt v d v mt bng REST vi mt tiu
im an ninh.
Bng 4. An ninh
Ti nguyn URI Phng thc Vai tr Mc an ninh ca th hin
Incentive /incentive POST qun tr (admin) Yes: Mt nh cung cp ch
c th qun l cc ch
khuyn khch ca h.
Incentive /incentive GET tt c No (khng)
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 13 ca 58
Incentive /incentive/<incentiveId> GET tt c No (khng)
Incentive /incentive/<incentiveId> PUT qun tr (admin) Yes: Mt nh cung cp ch
c th qun l cc ch
khuyn khch ca h.
Incentive /incentive/<incentiveId> DELETE qun tr (admin) Yes: Mt nh cung cp ch
c th qun l cc ch
khuyn khch ca h.
Incentive /incentive?location=<input> GET tt c No (khng)
Bt k ti nguyn no khc /<Anything Else> ALL khng ai c
iu kin tin quyt
chy v d trong bi ny, bn cn:
Ti xung chng trnh dng lnh WebSphere sMash Developer Edition t:
http://www.projectzero.org/download/
Gii nn zero.zip vo mt th mc. V d, gc ca th mc Application.
sMashArticlePart1.zip
Gii nn n vo bt k th mc no.
Firefox 2.x ( http://www.mozilla.com/en-US/products/download.html ?
product=firefox-2.0.0.14&os=osx&lang=en-US)
Firebug ( https://addons.mozilla.org/en-US/firefox/addon/1843)
Poster plug-in ( https://addons.mozilla.org/en-US/firefox/addon/2691)
Xy dng dch v RESTful u tin ca bn dng WebSphere sMash
Trong phn ny, bn bt u xy dng ng dng, kho st cc kt qu t c, thm vo mt
s ph thuc v to mt u vo (entry) cu hnh cho c s d liu ca bn.
Khi chy trnh xy dng ng dng v to mt ng dng
Phin bn trc ca bi ny s dng plug-in Eclipse Project Zero. Trong phin bn ny, bn s
s dng trnh xy dng ng dng da trn Web (AppBuilder) cho WebSphere sMash
1. khi chy AppBuilder, hy n du nhc v thc hin mt lnh.
a. Bn c th khi chy AppBuilder bng cch di chuyn n ca s terminal (chng hn nh
iTerm vi MAC hoc du nhc CMD vi Windows). Di chuyn n th mc ni m bn
gii nn zero v chy lnh appbuilder open (hoc ./appbuilder open). Hnh 9 hin th
mt v d dng iTerm cho MAC.
Nu y l ln u chy AppBuilder, mi trng chy WebSphere sMash s bt u ti
xung cc thnh phn cn thit chy AppBuilder t projectzero.org. iu ny ch xy ra
khi bn chy AppBuilder ln u.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 14 ca 58
Hnh 9. Ca s Terminal
b. Sau khi lnh kt thc Firefox s m ca s ti http://localhost:8070. y chnh l v tr ca
AppBuilder. AppBuilder t n l mt p dng WebSphere sMash. Hnh 10 s trnh by
mt AppBuilder c khi chy trong Firefox.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 15 ca 58
Hnh 10. AppBuilder
2. By gi bn khi chy AppBuilder, bn c th to mt ng dng mi.
a. Chn New Application nh c ch ra trong hnh 11. t tn cho ng dng NJEnergy.
Gi th mc gc v m bo rng nhm m un khng b xo trn. Bn c th nhp vo
m t hay khng cng c. La chn Create.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 16 ca 58
Hnh 11. To mt ng dng mi gi l NJEnergy
b. Bn nn xem NJEnergy c ch ra sau y. Nhn vo NJEnergy di y.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 17 ca 58
Hnh 12. ng dng NJEnergy
Cc sn phm ng dng
Trc khi xy dng ng dng, hy xem li mt s cc sn phm ng dng. Bn s s dng trnh xem
AppBuilder explorer, n cho php bn kho st cc th mc v cc tp ca ng dng.
Hnh 13 trnh by cch b tr (layout) ca ng dng v gii thch cc th mc. c mt vi th
mc. Th mc App cha mt s cc th mc con, ni lp trnh vin lu cc kch bn. Ty thuc vo
th mc con, WebSphere sMash s p dng mt lot cc quy c. V d, th mc /app/resources
c s dng to mt dch v RESTful ngoi mt kch bn. Bn s lm vic bi ny. Th
mc cu hnh cha mt lot cc tp cu hnh.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 18 ca 58
Hnh 13. Cch b tr ng dng
Cc ph thuc (Dependencies)
u tin, thm mt s ph thuc cho ng dng ca bn. WebSphere sMash s dng mt cng
ngh t Apache Ivy. Tp ivy.xml c lu gi trong th mc cu hnh l ni cc ph thuc ny c
duy tr. Bn c th t mnh son tp ny bng tay, nhng v d ny s dng cc ph thuc ca trang
ca AppBuilder.
WebSphere sMash, thng qua Ivy s dng k php ca cc repository (kho cha), mt nm cc
b (local), mt nm my xa. Cc ng dng WebSphere sMash s khai bo mt tp cc ph
thuc. Khi thi hnh, qua cng ngh Ivy, s nhn vo trong kho cc b xem ph thuc c hin
th hay khng. Nu khng, n s ti thng tin t repository (kho cha) t xa. Mc nh, repository
(kho cha) t xa c t trong projectzero.org. Tuy nhin, bn c th cu hnh cc kho khc
nhau. V d, khi bn chy mt AppBuilder ln u tin, mi trng thc thi sMash ti nhng ph
thuc cn thit. Ivy cng h tr vic ti thng tin da trn phin bn. V d, bng cch cc xc nh
1.0.0.0, 2.0.0.0 bn ch cho WebSphere sMash ly phin bn mi nht gia 1.0.0.0 v 2.0.0.0
(khng loi tr ln nhau).
Appbuilder cung cp cc cng c thm cc ph thuc t ng dng ca bn hoc t repository
(kho cha) t xa.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 19 ca 58
1. Chn Dependencies, v bn nhn thy mt hp hin th cc ph thuc n c trc tip t tp
ivy.xml ca bn. Chn Add.
Hnh 14. Cc ph thuc
2. Bt u g zero.data. Hy m bo la chn Latest major version cho Filter By, v la chn
gi zero.data.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 20 ca 58
Hnh 15. Thm cc ph thuc
3. Thm hai ph thuc na theo cng cch:
a. zero.atom (cc th vin sMash to cc im tin Atom)
b. derby (Drivers kt ni cc phin bn nhng ca c s d liu Apache Derby)
Cc ph thuc ca bn nn trng tng t nh hnh 16.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 21 ca 58
Hnh 16. Thm cc ph thuc
4. Chuyn v tab explorer. Trong th mc config (cu hnh), m tp ivy.xml. Bn s thy tt c cc
ph thuc c lit k di <cc ph thuc> phn tp XML.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 22 ca 58
Hnh 17. ivy.xml
Cu hnh
Mc ch ca WebSphere sMash l gim s lng cn cu hnh to mt ng dng bng cch
da vo cc quy c. Tuy nhin, thnh thong cng cn nhng th nh l cu hnh c s d liu v
cc lut an ninh. Trong phn ny, bn to mt u vo cu hnh cho c s d liu ca bn.
Cu hnh trong WebSphere sMash c lm tp zero.config. Nh l bn hc trc y, tt c
d liu c lu trong ng cnh tng th th c to nn t hng lot cc khu vc. Bn to d
liu cu hnh bn trong khu vc cu hnh ca ng cnh tng th. Trong phn ny, bn to mt on
cu hnh cho c s d liu. Tp zero.config cha cu hnh cho mt ng dng WebSphere sMash.
1. Chn tab File Editor. Trong phn All Files, tm v chn tp zero.config.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 23 ca 58
Hnh 18. zero.config
2. Thm vn bn (text) cu hnh vo tp zero.config nh c ch ra di y. (Bn c th dn
n vo <download_root>/sMashArticleSeries/Part1/dbconfig.txt trong tp Ti v.)
Hnh 19. Cu hnh c s d liu
By gi bn cn to cc bng c s d liu v mt cht d liu mu. Mt mc tiu ca WebSphere
sMash l cho php bn to nhanh chng cc ng dng. Mt trong nhng cch l dng giao din
dng lnh zero (command line interface - CLI). Bn c th pht trin sMash y bng cch
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 24 ca 58
dng cng c dng lnh. Bn chy ng dng ca bn, qun l chng, qun l cc kho Ivy v v.v..
WebSphere sMash AppBuilder c khung nhn console cho php bn nhp cc lnh. Cc lnh dng
zero <task> <options>.
WebSphere sMash cung cp cc tc v chy cc kch bn c s d liu. Bn s dng dng lnh
chy mt kch bn c s d liu.
1. Trong File Editor, phn Recent Files chn New File -> Other.
Hnh 20. Tp mi
2. t tn tp /sql/dbscript.sql, nh c ch ra di y.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 25 ca 58
Hnh 21. dbscript.sql
3. Thm on SQL, nh c ch ra trong hnh 22. (Bn c th dn n t <download_root>/
sMashArticle/Part1/dbscript.txt t Ti v.)
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 26 ca 58
Hnh 22. Kch bn SQL
Bc tip theo l vo khung nhn console ca AppBuilder v chy tc v zero chy mt kch bn
c s d liu.
1. Chn tab Console, sau chn Command Prompt.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 27 ca 58
Hnh 23. Dng lnh
2. Nhp lnh zero runsql NJDB sql/dbscript.sql. Lnh runsql ly tn c s d liu m chng
ta cu hnh zero.config, v tn kch bn.
Hnh 24. Lnh runsql
3. Bn nn xem cc kt qu tng t nh di y.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 28 ca 58
Hnh 25. Cc kt qu lnh
To ti nguyn RESTful
Ti thi im ny bn thc s bit cch to ra ti nguyn RESTful bng cch vit mt kch bn
Groovy v t n vo th mc /app/resources. Trc bn cng hc bit rng WebShere
sMash da trn s kin, v cng vic ca cc lp trnh vin l vit mt b x l s kin. C mt v
d s dng th mc public t cc kch bn GrooVy n c th c cc iu khin s kin ging
nh onGET hoc onPOST. Cng cn nh li khi nim cc th mc o chuyn dng iu ny cho
php bn to ra mt vi th mc thc thi mc nh khc.
Trong phn ny bn s dng th mc /app/resources , n l th mc chuyn dng cho vic to cc
ti nguyn cho dch v REST. Bng 5 tng kt cc mu URI v giao thc HTTP, cng nh s kin
xy ra khi truyn tin. Mu URI l mt tp hp cc tc nhn pht s kin. Nhng i tng hay c
s dng c nh du bng in m.
Bng 5. Cc s kin sMash REST
Mu URI Giao thc HTTP S kin sMash M t
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 29 ca 58
/resources/collection GET list Danh sch tt c cc thnh
vin
POST create To mt thnh vin
PUT putCollection Cp nht mt tp hp
DELETE deleteCollection Xa mt tp hp
/resources/collection/{id} GET retrieve Ly v thng tin mt thnh
vin
PUT update Thay th mt thnh vin
DELETE delete Xa mt thnh vin
POST postMember ng mt Thnh vin
Nu tn tp hp nm trong tp URI mang tnh khuyn khch (http:<host>/resources/incentive),
th n s tm kim cc b iu khin trong kch bn gi n. <script-ext> (v d incentive.groovy or
incentive.php). V vy, nu mt yu cu GET n t /resources/incentive, sau mt danh sch
cc s kin c a ra v sMash s tm n iu khin onList() c trong incentive.groovy hay
incentive.php. Nu mt yu cu GET n t cp thnh vin, v d nh /resources/incentive/3,
th n s tm n iu khin onRetrieve() c trong incentive.groovy hay incentive.php. Ti cp
thnh vin, sMash s t ng t Id vo GlobalContext, cng nh bt k b sung no sau Id.
sMash cng h tr cc ti nguyn lng nhau, ging nh l /provider/<providerId>/incentive/
<incentiveId>. Bn c th to mt tp c bit incentive.bnd xc nh cc mi quan h lng
nhau. Trong Bng 6 a ra mt vi v d v cc yu cu ti nguyn, iu khin thng tin iu khin
v s kin m d liu c truyn vo.
Bng 6. Qun l s kin v d liu s kin
Giao thc HTTP URI dn ra giao thc trong app/
resources/incentive.groovy
vi d liu s kin
GET /resources/incentive onList
POST /resources/incentive onCreate zget(/request/input) // POST data
GET /resources/incentive/3 onRetrieve zget("/request/params/
incentiveId")==3
DELETE /resources/incentive/3 onDelete zget("/request/params/
incentiveId")==3
PUT /resources/incentive/3 onUpdate zget("/request/params/
incentiveId")==3
xy dng mt dch v khuyn khch p ng nm s kin ti nguyn, u tin bn cn to mt
ti nguyn RESTful.
1. Tr li trnh son tho, chn New File -> New Resource in (/app/resources), nh di y.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 30 ca 58
Hnh 26. Ti nguyn mi
2. Thm incentive.groovy vo /app/resources.
Hnh 27. incentive.groovy
Tip theo, Bn cn vit mt b x l s kin p ng mt danh sch cc s kin. N s c
thc hin khi m mt khch hng yu cu mt HTTP GET ti /incentive.
Thm vo on m trong hnh 28 (dn n t <download_root>/sMashArticleSeries/Part1/onList.txt
trong tp Ti v ). y, bn s dng zero.data APIs truy cp mt qun l (c ci t trong
tp zero.config), v thc hin cc cu lnh SQL. Kt qu ca cc truy vn c tr v ging nh
JSON. y l mt nh ngha trc kt qu tr v trong sMash. Nu bn mun mt ty chn kt
qu, bn c th lu mt mu (template) trong /app/views v truyn tn ca kch bn ci t mu
(template).
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 31 ca 58
Hnh 28. onList
Bn c th chy nhanh chng trnh v kim tra kt qu.
1. Nhn Start, gc trn bn phi trong hnh 29.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 32 ca 58
Hnh 29. Chy mt ng dng
2. Ch ng dng bt u. AppBuilder s pht cc lnh thch hp chy chng trnh. Bn s
nhn thy mt biu tng bt u ng dng.
Hnh 30. Bt u mt ng dng
3. Click chn lin kt application ti nt stop.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 33 ca 58
Hnh 31. M mt ng dng
4. Mt tab trnh duyt mi hoc mt trang mi s hin th khi chy ng dng. Trang index mc
nh c hin th ging nh hnh 32. Bn s s dng trnh b sung Firefox Poster kim tra
cc dch v RESTful ca bn. Chn biu tng P khi chy Poster.
Hnh 32. Trang ch mc mc nh
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 34 ca 58
Firefox Poster l mt thnh phn m rng ca Firefox cho php bn kim tra cc dch v RESTful
ca bn, bao gm thc hin POST, PUT, v DELETE. Bn s dng cng c ny kim tra cc
tng tc RESTful.
1. Trong thanh URL, nhp vo http://localhost:8080/resources/incentive nh bn di, v
chn GET.
Hnh 33. GET vi Poster
2. Bn c th ly v mt danh sch JSON tr v ca incentive (khuyn khch).
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 35 ca 58
Hnh 34. Kt qu /resources/incentive
Bn va to mt ti nguyn RESTful cho vic ly v mt danh sch ca s tng tc. Tip theo,
bn s to mt iu khin cho s kin ly. y l mt tr v mt khuyn khch (incentive) n da
trn mu URI.
1. Hnh 35 hin th iu khin onRetrieve . (Bn c th dn thng tin t tp <download_root>/
sMashArticleSeries/Part1/onRetrieve.txt ly t tp Ti v.) Trong chui truy vn bn c mt
bin GString truy cp ton cc. ID c lu tr trong vng yu cu (Request zone), ging
nh trnh by trc. (Bao gm, zero.data API s dng mt cu lnh chun b (prepared
statement).)
Hnh 35. onRetrieve
2. Quay li cng c Firefox Poster, by gi bn c th kim tra URI. Nhp vo http://
localhost:8080/resources/incentive/1 v chn GET.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 36 ca 58
Hnh 36. Kim tra onRetrieve
3. Bn s nhn c kt qu xem trong Hnh 37.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 37 ca 58
Hnh 37. Kt qu onRetrieve
Cho n gi, bn va nhn c kt qu tr v l mt d liu JSON. Trong cc ng dng Web 2.0
bn c th mun tr v mt im tin Atom. Bn cp nht phng thc onList tr v mt ngun
Atom. Bn c th mun cung cp mt nhm cc danh sch.
1. Thay th ci t onList bng on m trong Hnh 38. (Bn c th ly t tp <download_root>/
sMashArticleSeries/Part1/onListAtom.txt ly t tp Ti v.) Mt s iu cn lu :
u tin, hy nhn cc tham s truy vn (query) s dng GlobalContext. Ch rng bn
c th truy cp danh sch cc phn t mt cch trc tip.
Sau khi truy vn, m kim tra mt tham s yu cu cho mt nh dng phn t. Nu n
tn ti, n s hin th nu l atom. Nu vy, bn s dng kch bn Groovy to ra mt
cu trc vi cc trng Atom bt buc v thc hin hon tr n.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 38 ca 58
Hnh 38. onList tr v Atom hoc JSON
2. Chuyn sang trnh duyt Firefox, trong mt Tab khc, nhp vo http://localhost:8080/
resources/incentive?format=atom nh c hin th trong Hnh 39.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 39 ca 58
Hnh 39. Kt qu tr v Atom
Cho n gi, bn va lp m phng thc GET cho vic c d liu. By gi bn c th m ha
cc phng thc POST, PUT, v DELETE.
1. Thm vo on m hin th trong hnh 40. Bn c th ly t tp <root>/free (<download_root>/
sMashArticleSeries/Part1/updates.txt t tp Ti v ). Bn s thy mt vi thng bo.
Bn c mt phng thc iu khin vic to, cp nht v xa tng ng vi giao thc
HTTP POST, PUT, v DELETE, nh trong phn trnh by tip theo.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 40 ca 58
WebSphere sMash c giao thc gii m (decode) v m ha (encode) JSON. Bn c
th d dng truyn bin request.input[] t GlobalContext n phng thc gii m
c mt biu din kch bn (Groovy Map cho mt i tng JSON, hoc mt mng danh
sch Groovy) ca i tng input.
D liu c truyn vo truy vn ging nh Groovy GString.
Bn c th thit lp p ng HTTP thch hp.
Hnh 40. Cc phng thc cp nht d liu (Update)
2. Quay tr li cng c Firefox Poster, nhp URL http://localhost:8080/resources/incentive.
Trong vng d liu, nhp vo i tng JSON ging nh trong Hnh 41. (Bn c th ly ni
dung trong tp (<download_root>/sMashArticleSeries/Part1/postInput.txt t tp Ti v ).
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 41 ca 58
Hnh 41. Kim tra POST
3. Bn s nhn v mt p ng 204 m n cp nht thnh cng. Ch rng trong phn u c
URL vi phn t mi nht c ti ln.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 42 ca 58
Hnh 42. p ng POST
4. Thay i mt trong nhng phn t d liu v d nh tn. Copy URL POST(hoc thm ID vo
ch kt thc URL) quay tr li Poster nhp v thc hin mt PUT.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 43 ca 58
Hnh 43. Yu cu PUT
5. Thnh thong, ph thuc vo cc tng la, bn khng th thc hin PUT. Bng cch thm vo
phn u X-Method-Override v y gi tr PUT, ging nh hnh 44, bn cng c th thc
hin mt PUT thng qua POST. y ch l gii php nu nh PUT khng thc hin c. Bn
s nhn c mt trng thi 204. Bn c th thc hin GET trn cng mt URI chc chn
rng vic cp nht xy ra.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 44 ca 58
Hnh 44. Ghi POST
6. Thc hin Delete trn cng mt URI.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 45 ca 58
Hnh 45. Xa
7. Bn s nhn mt trng thi 204, ging nh trong hnh 46. Nu bn thc hin mt GET, bn s
nhn c mt trng thi 404 cho vic khng tm thy.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 46 ca 58
Hnh 46. Kt qu xa
Bo mt ti nguyn RESTful
Khi xy dng mt ng dng RESTful, bn phi thc hin bo mt ti khon (account). Trong phn
ny bn bo mt giao thc POST, PUT v DELETE cho cc khuyn khch cho php mi ngi
c truy cp ng dng cung cp ca mnh. GET s khng c bo mt cho php khch hng
c th tm kim cc khuyn khch trn internet.
Lut bo mt c a vo trong tp cu hnh zero. Chng ta s s dng tp mc nh
security.config. Tuy nhin, bn c th lu thng tin bo mt trong mt tp cu hnh v gp (include)
chng vo zero.config.
1. Chuyn n b son tho File. phn Recent Files, chn tp zero.config.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 47 ca 58
Hnh 47. zero.config
2. Nhp vo cc lut bo mt nh trong hnh 48. Bn c th ly thng tin t tp securityRules.txt
(<download_root>/sMashArticleSeries/Part1/securityRules.txt t tp Ti v ). Mt vi ch :
C mt nguyn tc cu hnh mc nh rng bn l cn thit, ly cc mu. Ch rng
bn ch nh mt iu kin. Trong trng hp ny, Chng ta s xem xt mt yu cu
HTTP cho php khp /resources/incentive (v mi th sau biu thc (/*|?) v giao thc
HTTP, DELETE, POST, hoc PUT). Thng tin ny nm trong GlobalContext, v n c
gi trong sut pha bo mt ca vng i yu cu (request) c ch ra trc.
Bn ch r mt loi xc thc, n c bn thi. (WebSphere sMash h tr cc loi khc
ging nh l Form, ng nhp n (Sign-on), hay Open ID. Xem phn bo mt ca
WebSphere sMash Ch dn ca nh pht trin). Tip theo bn c th ch nh cc Nhm,
cc Ngi dng hoc cc vai tr (Role) cho php truy cp URI ny. Mt nhm c bit
c xc nh truy cp cho bt k ngi s dng no c xc thc.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 48 ca 58
Hnh 48. Cc lut bo mt
3. WebSphere sMash cung cp mt ng k (registry) da trn tp mc ch m n l l tng
pht trin. Sau khi m thc hin pht trin ng dng bn cn chuyn sang mt ng k
da trn LDAP da trn ty chn. Bn c th to nhiu ngi s dng trong cc tp mc nh
bng cch s dng zero CLI.
Chuyn sang mn hnh console v t du nhc lnh. Nhp vo lnh: zero user create admin
password ging nh Hnh 49.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 49 ca 58
Hnh 49. To Ngi s dng
4. Kt qu s hin th nh trong hnh 50.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 50 ca 58
Hnh 50. Kt qu thc hin lnh Zero
K t khi bn thay i cu hnh, bn phi tin hnh khi ng li ng dng kim tra.
1. Nhn vo Stop trong gc trn bn phi nh trong hnh 51.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 51 ca 58
Hnh 51. Dng mt ng dng
2. Nhn Run thc hin chy li ng dng.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 52 ca 58
Hnh 52. Chy mt ng dng
3. Quay tr li cng c POSTER v thc hin GET ti http://localhost:8080/resources/
incentive, nh trong hnh 53. Mt yu cu GET l khng c bo mt, v bn s nhn mt
danh sch ging nh bn lm trc .
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 53 ca 58
Hnh 53. Khng bo mt GET
4. Thc hin yu cu POST vi cng Input trc . Bn c th ly li thng tin t tp
postInput.txt (<download_root>/sMashArticleSeries/Part1/securityRules.txt t tp Ti v ).
Hnh 54. Yu cu POST
5. Bn s nhn c mt nhc nh cn nhp tn ngi dng v mt khu. Nhp admin/password.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 54 ca 58
Hnh 55. Nhc nh bo mt
6. Bn s nhn c trng thi 204 vi mt ti nguyn mi c to. Tng t bn c th kim
tra vi PUT v DELETE.
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 55 ca 58
Hnh 56. Kt qu POST
Kt lun
Bi ny cp nht mt bi bo trc v Project Zero, bn s dng m sn phm t WebSphere
sMash. Bn c gii thiu ti sn phm v hc v WebSphere sMash c cu trc hng s
kin. Global context l mt phng tin bo dng tt c cc trng thi cho mt ng dng.
WebSphere sMash l ng dng trung tm, vi rt nhiu cc th mc o gip bn s dng vi vic
gim thiu cc cu hnh trong mt ng dng.
Bn s dng WebSphere sMash xy dng mt ng dng da trn REST. Bn s dng ng
dng mi AppBuilder, mt mi trng tch hp pht trin trn nn Web xy dng cc ng dng
sMash. Cui cng, bn hc c cch lm th no bo mt ti nguyn RESTful s dng cc
lut bo mt sMash.
Trong bi bo tip theo bn s tip tc tm hiu su hn v REST bng cch xy dng mt ng
dng tiu dng. Bn s s dng cc mu (pattern) khc cho vic xy dng mt dch v REST c
gi l m hnh ti nguyn khng (zero resource model - ZRM). Bn cng s thc hin xy cc trnh
khch Internet giu c cho cc ti nguyn RESTful s dng Dojo Toolkit.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 56 ca 58
Cc ti v
M t Tn Kch thc
V d ca bi ny sMashArticlePart1.zip 10KB
ibm.com/developerWorks/vn/ developerWorks
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 57 ca 58
Ti nguyn
Hc tp
Hc thm v mi trng WebSphere sMash vic to, lp ghp v thc hin mt ng dng
da trn cc cng ngh Web ph bin.
WebSphere sMash S tay cho ngi lp trnh gii thch cc khi nim ct li l xc nh cu
trc ca mt ng dng WebSphere sMash.
S dng WebSphere sMash Din n (Forum) nh tr gip, lin h, thng bo, tho lun
v cc vn pht trin...
"Why do non-functional requirements matter? (Ti sao cc yu cu phi chc nng li quan
trng?)" (developerWorks, thng 1, 2006) tho lun v l do ti sao gii php ca bn c th
rt tt v thit thc tr phi bn khng xem xt cc yu cu phi chc nng.
Hc thm v Groovy, mt ngn ng ng cho nn tng Java.
c lm cch no ci t v cu hnh PHP cho pht trin cc ng dng WebSphere sMash
v cc m rng PHP cho Project Zero.
Xem thm developerWorks cc bi bo v hng dn v WebSphere sMash.
Hc v Dojo, cng c JavaScript toolkit, v Dojo widgets.
c v Representational State Transfer (REST) vit bi Roy Thomas Fielding's, "Architectural
Styles and the Design of Network-based Software Architectures."
Ly cc thng tin v JSON v h tr JSON trong WebSphere sMash.
Ly thm cc thng tin v trnh duyt Web Firefox bi Mozilla v Poster plug-in.
c v Apache Derby, v lin h database m ngun m trong trin khai v ci t bng
Java.
Tm kim thng tin lu gi tm (caching) vi mt bi hc caching cho tc gi Web v cc
qun tr web.
Hc v Pht trin mang tnh thng mi hng cng ng (CD/CD).
c "Resource-oriented vs. activity-oriented Web services (nh hng ti nguyn so vi nh
hng hot ng trong cc dch v web)" (developerWorks, thng 10, 2004) tm hiu thm
v cc mi quan h ca REST-SOAP-Style v dch v web.
Xem thm developerWorks bi vit v bi hc v REST.
Xem Ngun cung cp d liu RSS. (Tm hiu thm v RSS.)
Xem developerWorks Architecture v ly cc ti nguyn bn cn cho vic ci tin k nng
trong cu trc IT.
Xem kho sch cng ngh cho cc sch ny v cc ch k thut khc.
Ly sn phm v cng ngh
Ti v WebSphere sMash.
Ti v Cc phin bn th nghim sn phm IBM v ly v cc cng c pht trin phn mm v
cc sn phm phn mm trung gian cho DB2, Lotus, Rational, Tivoli, v WebSphere.
Tho lun
Tham gia vo cc din n tho lun v d n Zero.
Cc blog developerWorks v tham gia cng ng developerWorks.
developerWorks ibm.com/developerWorks/vn/
Gii thiu IBM WebSphere sMash, Phn 1: Xy dng cc dch v
RESTful cho ng dng Web ca bn
Trang 58 ca 58
i nt v cc tc gi
Roland Barcia
Roland Barcia l mt nhn vin k thut cao cp v l ngi i u trong dch v
Web 2.0 cho cc dch v phn mm ca IBM i vi WebSphere. ng cng l ng
tc gi ca cun sch IBM WebSphere: Deployment and Advanced Configuration v
Persistence in the Enterprise
Steve Ims
Steve Ims l mt nhn vin k thut cao cp v l ngi dn u v Cng c pht
trin ng dng (App Builder) cho WebSphere sMash. Bn s tm thy Steve trong cc
din n v Project Zero
Copyright IBM Corporation 2009
(www.ibm.com/legal/copytrade.shtml)
Nhn hiu ng k
(www.ibm.com/developerworks/vn/ibm/trademarks/)

You might also like