Veb-xizmatlarni RESTning usulini yaratish

Source: http://xfront.com/REST-Web-Services.html

Roger L. Costello

Men birinchi dam olish uchun qisqa joriy ta’minlash va keyin REST uslubida veb xizmatlarni qurish uchun qanday tasvirlab beradi.

REST nima?

REST doktorlik Roy Fielding o’ylab atamadir dissertatsiya [1] bir tasvirlash uchun arxitektura uslubi tarmoq tizimlari. REST vakillik Davlat transferi uchun tik qisqartirish.

Nima uchun u vakillik davlat transfer deb ataladi?

Veb resurslar iborat. A resurs qiziqtirgan har qanday element hisoblanadi. Misol uchun, Boeing aviatsiya Corp bir 747 resurs aniqlash mumkin. Mijozlar bu URL bilan resurs kirish mumkin:

http://www.boeing.com/aircraft/747

A vakillik resurs qaytariladi (masalan, Boeing747.html). Vakillik bir yilda mijoz ariza joylashadi davlat. Boeing747.html yilda bir ko’prik çaprazlayan mijoz, yana bir manba olishimiz zarur bo’ladi. Yangi vakillik yana bir holiga mijoz ariza joylashadi. Shunday qilib, mijoz ariza o’zgarishlar (transfer har resurs vakillik bilan s) davlat -> vakillik davlat uzatish! Bu erda vakillik Davlat transferi ma’nolarining Roy Fielding ning tushuntirish: natijada foydalanuvchi ishoratlar (davlat O’tishlarning) tanlab, bir dastur orqali o’sib ulg’aygan veb-sahifalar (a virtual davlat-mashina), bir tarmog’i: “vakillik Davlat uzatish yaxshi mo’ljallangan veb-ariza muomala qanday tasvirni keltirib chiqarish uchun mo’ljallangan (ilovaning keyingi holatini ifodalovchi) Keyingi sahifa foydalanuvchiga o’tkazilishi va ularning foydalanish uchun ko’rsatilayotgan qilinmoqda.”

REST uchun motivatsiya

Qolganlari uchun motivatsiya veb muvaffaqiyatli amalga Veb xususiyatlarini qo’lga edi. Keyinchalik bu xususiyatlari Veb evolyutsiya hidoyat qilish uchun ishlatiladi.

REST – me’moriy uslub, emas bir standart

REST standart emas. W3C’ning REST spetsifikatsiyasini ko’rsatganini ko’rmaysiz. Siz IBM yoki Microsoft yoki Sunni REST ishlab chiquvchisining asbob-uskunalarini sotayotganini ko’rmaysiz. Nima uchun? Chunki REST faqat me’moriy uslubdir. Ushbu uslubni bekitishingiz mumkin emas. Buni faqat tushunishingiz va veb-servislaringizni shu uslubda loyihalashtirishingiz mumkin. (Mijoz-server me’moriy uslubiga o’xshash, mijoz-server standarti yo’q).

REST standart emas, standartlardan foydalanadi:

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/va boshqalar (resurs vakolatxonalari)
  • Matn/XML, matn/html, image/gif, image/jpeg, va boshqalar (MIME turlari)

Klassic REST tizimi

Veb REST tizimi! Ko’p yillardan buyon foydalanadigan veb-xizmatlarning ko’pchiligi – kitob-buyurtma xizmatlari, qidiruv xizmatlari, onlayn lug’at xizmatlari va boshqalar – REST-ga asoslangan veb-xizmatlardir. Afsuski, Siz REST xizmatidan foydalanib, REST xizmatlarini qurmoqdasiz va buni bilmas edingiz.

REST vebdagi “katta rasm” bilan bog’liq. Dasturning tafsilotlari (masalan, veb-xizmatini amalga oshirish uchun Java servlets yoki CGI yordamida) bilan bog’liq emas. Keling, REST “katta rasm” nuqtai nazaridan veb-xizmatni yaratishga misolni ko’rib chiqaylik.

Qismlari dexarid buyurtmasit Veb-xizmatlar

Parts Dexarid buyurtmasit, Inc (soxta kompaniya) o’z mijozlariga imkon berish uchun, ba’zi veb-xizmatlar joylashtirildi berdi:

  • buyumlar ro’yxatini olish
  • ma’lum bir qismi haqida batafsil ma’lumot olish
  • buyurtma taqdim

Ning bu xizmatlarning har bir dam moda amalga oshirilmoqda ko’rib chiqaylik.

Qismlari ro’yxati qiling

Veb-xizmat bir qismlari ro’yxati resurs mumkin bo’lgan URL qiladi. Misol uchun, bir mijoz qismlari ro’yxatini olish uchun ushbu URL foydalanishingiz edi:

http://www.parts-dexarid buyurtmasit.com/parts

“Qanday qilib” Veb-xizmat qismlari ro’yxati hosil mijozga to’liq shaffof ekanligini unutmang. Biladi Barcha mijoz u/u, keyin yuqorida URL topshirsa, agar buyumlar ro’yxatini o’z ichiga olgan hujjat qaytib, deb hisoblanadi. Amalga oshirish, mijozlar uchun shaffof ekan, qismlari Dexarid buyurtmasit mijozlariga ta’sir holda bu resurs asosiy bajarilishini o’zgartirish uchun bepul. Bu bo’sh ulash.

Bu yerda, mijoz qabul hujjat bo’ldi:

<?xml version="1.0"?>
<p:Parts xmlns:p="http://www.parts-dexarid buyurtmasit.com" 
         xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part id="00345" xlink:href="http://www.parts-dexarid buyurtmasit.com/parts/00345"/>
      <Part id="00346" xlink:href="http://www.parts-dexarid buyurtmasit.com/parts/00346"/>
      <Part id="00347" xlink:href="http://www.parts-dexarid buyurtmasit.com/parts/00347"/>
      <Part id="00348" xlink:href="http://www.parts-dexarid buyurtmasit.com/parts/00348"/>
</p:Parts>

[Kontent muzokaralar yo’li bilan xizmat mijoz (mashina-mashina ishlov berish uchun) XML deb vakilligini istaydi, deb belgilangan deylik] qismlari ro’yxati har bir qismi haqida batafsil ma’lumot olish uchun havolalar mavjud unutmang. Bu REST bir muhim xususiyati hisoblanadi. ko’rib chiqish va javob hujjatda muqobil URL orasidan tanlab keyingi bir davlatdan mijoz o’tkazmalari.

Mukammal qismi ma’lumotlarni oling

Veb-xizmat har bir qismi resurs mumkin bo’lgan URL qiladi. mijoz qismi 00345 talab qanday Misol, bu yerda gap:

http://www.parts-dexarid buyurtmasit.com/parts/00345

 Mijoz qabul qilgan hujjat:

<?xml version="1.0"?>
<p:Part xmlns:p="http://www.parts-dexarid buyurtmasit.com"   
        xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part-ID>00345</Part-ID>
      <Name>Widget-A</Name>
      <Description>This part is used within the frap assembly</Description>
      <Specification xlink:href="http://www.parts-dexarid buyurtmasit.com/parts/00345/specification"/>
      <UnitCost currency="USD">0.10</UnitCost>
      <Quantity>10</Quantity>
</p:Part>

Shunga qaramay, bu ma’lumotlarning yana qanday ma’lumotlarga bog’liqligini kuzating – bu qismning spetsifikatsiyasi ko’prikni almashtirish orqali topilishi mumkin. Har bir javobnoma hujjati mijozga batafsil ma’lumot olish uchun pastga tushirish imkonini beradi.

Sotib olish to’g’risida tartibini yuboring

Veb xizmati xarid buyurtmasi ni yuborish uchun URLni taqdim etadi. Mijoz, Dexarid buyurtmasinentlar Dexarid buyurtmasitining (va WSDL hujjatida e’lon qilingan) XS sxemasiga mos keladigan xarid buyurtmasi nusxasi hujjatini yaratadi. Mijoz, xarid buyurtmasi.xml ni HTTP xarid buyurtmasiST xizmatining yuki sifatida yuboradi.

xarid buyurtmasichta xizmati HTTP xarid buyurtmasistga yuborilgan xarid buyurtmasi ga URL bilan javob beradi. Shunday qilib, mijoz keyinchalik har qanday vaqtda xarid buyurtmasi’ga ega bo’lishi mumkin (yangilash/tahrirlash uchun). xarid buyurtmasi, mijoz va server o’rtasida bo’ladigan ma’lumotlarning bir qismiga aylandi. Umumiy ma’lumot (xarid buyurtmasi) server tomonidan manzil (URL) berilgan va veb-xizmati sifatida namoyon bo’ladi.

Jismoniy URL versus mantiqiy URL

Resurs kontseptual shaxsdir. Bir vakillik resursning aniq ifodasidir. Ushbu URL:

http://www.parts-depot.com/parts/00345

jismoniy URL emas, mantiqiy URL-manzil. Shunday qilib, har bir bo’lim uchun statik HTML sahifasi bo’lishi shart emas. Darhaqiqat, millionli qismlar bo’lsa, millionli statik HTML-sahifalar juda jozibali dizayni bo’lar edi.

[Ilova haqida ma’lumot: Deponentlar Depot ma’lum bir qism haqida batafsil ma’lumotni o’z ichiga olgan xizmatni amalga oshirishi mumkin, bu esa Java Servletni ota-kompyuter nomidan so’ng mag’lubiyatga ajratadigan holda ishlatadi, parcha ma’lumotlar bazasini so’rash uchun parcha raqamidan foydalanadi, so’rov natijalarini XML sifatida shakllantiradi va XML-ni HTTP javobining foydali yuki sifatida qaytaradi.]

Uslub URL-laridan foydalanishda qo’llanilgan dasturning texnikasi aniqlanmasligi kerak. Mijozlaringizga ta’sir qilmasdan yoki noto’g’ri URL manzillarsiz o’zingizning dasturni o’zgartirishingiz mumkin.

REST Veb-xizmatlar tavsifi

Bu erda dam xususiyatlari bor:

  • Mijoz-Server: a pull asoslangan o’zaro uslubi: iste’mol qismlariga vakolatxonalarga torting.
  • Fuqaroligi bo’lmagan: serverga mijoz har so’rovi tushunish uchun zarur bo’lgan barcha ma’lumotlarni o’z ichiga olishi kerak, va serverda har qanday saqlanadi ma’noda foyda olish mumkin emas.
  • Kesh: tarmoq samaradorligi javob yaxshilash uchun cacheable yoki bo’lmagan cacheable sifatida etiketlenmemesidir qodir bo’lishi kerak.
  • Yagona interfeysi: Barcha resurslari umumiy interfeys bilan murojaat etiladi (masalan, HTTP GET, POST, PUT, DELETE).
  • Nomidagi resurslari – tizimi URL yordamida nomlangan resurslarni iborat.
  • O’zaro bog’liq resurs vakolatxonalari – resurslari vakolatxonalari ila bir davlatdan boshqa bir harakat uchun mijoz imkon, URL foydalanib biriga bog’liq.
  • Qatlamli komponentlar – vositachilar, va hokazo proksi serverlar, kesh serverlar, tarmoq kechuv, deb, ishlashi, xavfsizlik, va hokazo qo’llab-quvvatlash uchun mijozlar va resurslarni o’rtasida joylashtirilgan bo’lishi mumkin

Qolgan veb-xizmati dizayn asoslari

1. REST tarmog’ida Web Services yaratish uchun kalit (ya’ni, veb) siz xizmatlari sifatida fosh qilmoqchi kontseptual shaxslarning barcha aniqlash hisoblanadi. qismlari ro’yxati, batafsil qismi ma’lumotlar, sotib olish tartibi: biz resurslarni ayrim misollarni ko’rib yuqorida.

2. Har bir resurs uchun URL yaratish. resurslari ot emas, balki fe’llar bo’lishi kerak. Misol uchun, bu ishlatmang:

http://www.parts-depot.com/parts/getPart?id=00345

getPart. fe’l Eslatma. Buning o’rniga, bir noun foydalanish:

http://www.parts-depot.com/parts/00345

3. Mijozlarga faqat resurs bir vakilligini olish mumkin yoki yo’qligini ko’ra sizning resurslarni Kategoriyalarga yoki mijozlar o’zgartirish mumkin bo’lsin resurs (qo’shib). Sobiq uchun, bir HTTP GET foydalanib, bu resurslari yaxshi qilish. Keyinchalik uchun, HTTP Post foydalanib, bu resurslari yaxshi qilish qo’yish, va/yoki o’chirish.

4. HTTP GET orqali yaxshi barcha resurslari tomoni-ta’siri bepul bo’lishi kerak. Ya’ni, resurs faqat resurs bir vakilligini qaytarib kerak. Resurs iltijo resurs o’zgartirish olib kelmasligi lozim.

5. Hech kim/ayol orol bo’lgan. Xuddi shunday, hech vakillik bir orol bo’lishi kerak. Boshqa so’zlar bilan aytganda, qo’shimcha ma’lumot olish uchun pastga burg’ulash uchun mijozlariga imkon berish uchun, va/yoki bog’liq ma’lumotlarni olish uchun manba vakolatxonalari bo’lgan ko’priklar qo’ydi.

6. Dizayn asta-sekin ma’lumotlarni oshkor qilish. Bitta javob hujjatda har bir narsani oshkor qilmang. Batafsil ma’lumot olish uchun ko’prik beradi.

7. Diagramma (DTD, W3C chizmalari, RelaxNG yoki Schematron) yordamida javob ma’lumotlar formati belgilang. A POST talab yoki unga yetkazilgan o’sha xizmatlari uchun, shuningdek, javob formatini belgilash uchun diagramma beradi.

8. Sizning xizmatlar wsdl hujjatni, yoki shunchaki bir HTML hujjatni ham yordamida duo qilinadi qanday tasvirlab bering.

Xulosa

Ushbu maqolada REST me’moriy uslub sifatida tasvirlangan. Aslida, bu Internetning me’moriy uslubi. REST, Internetning yaxshi ishlashini ta’minlaydi. REST tamoyillariga sodiq qolish, sizning xizmatlaringiz veb-kontekstida yaxshi ishlaydi.

Kelajakdagi maqolada REST tamoyillari yordamida Internetning evolyutsiyasi haqida yozaman.

Tanish

Bu hujjatni yaratish, ularning juda foydali izohlar uchun Robert Leftwich va Filipp Eskelin uchun rahmat.

Manbalar

[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm