Sobes.tech
Middle+

Дар бораи қоидаи интерфейси ягона (Uniform Interface) гап занед.

sobes.tech AI

Ҷавоб аз AI

Қоида Uniform Interface — REST архитектурасининг олти чеккадан бири. У тизимга мижоз ва сервер ўртасидаги алоқани бир хил, стандартлаштирилган ёндашувдан фойдаланишни тақиқлайди. Бу архитектурани соддалаштиради ва ажратиб қўяди, кўришни яхшилайди ва мижоз ва сервернинг мустақил ривожланишини осонлаштиради.

Uniform Interface компонентлари:

  1. Ресурсларнинг идентификацияси (Identification of resources): Ресурслар уникал идентификацияланиши керак (одатда URI орқали). Бу стандартлаштирилган ўзаро алоқанинг асоси. misol: /users/123, /products/ABC.
  2. Ресурсларни уларнинг тасвирлари орқали бошқариш (Manipulation of resources through representations): Клиент ресурснинг тасвирини олади (масалан, JSON ёки XML форматда), бу ресурсни ўзгартириш ёки ўчириш учун етарли маълумотни ўз ичига олади. Серверда ресурснинг ҳолати ўзгартирилиши мумкин, ўзгартирилган тасвирни юбориш орқали.
  3. Ўз-ўзини тасвирлайдиган хабарлар (Self-descriptive messages): Ҳар бир хабар (сўров ёки жавоб) тўлиқ тушуниш учун етарли маълумотни ўз ичига олиши керак, бу ҳолда сервер ёки бошқа сўровлар контекстига эҳтиёж йўқ. Бу мета-маълумотларни ўз ичига олади: мазмун тури, кешлаш ҳақида маълумот, бошқа ресурсларга ҳаволалар ва ҳоказо.
    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: max-age=3600
    
    {
      "name": "Example User",
      "links": [
        {
          "rel": "self",
          "href": "/users/123"
        }
      ]
    }
    
  4. Hypermedia - дастур ҳолатининг муҳаррири (HATEOAS): Клиентга гипермедий ҳаволалар орқали ресурслар орасида динамик ўтиш имконини беради, улар сервер жавобида тақдим этилган. Клиент барча URI-ларни олдиндан билмаслиги керак, фақат кириш нуқтаси. Сервер клиентни мавжуд амаллар ва ресурслар бўйича йўналтиради.
    {
      "orderId": "A123",
      "status": "processing",
      "links": [
        {
          "rel": "cancel",
          "href": "/orders/A123/cancel",
          "method": "POST"
        },
        {
          "rel": "self",
          "href": "/orders/A123"
        }
      ]
    }
    
    Тўғридан-тўғри кодланган йўллар ўрнига, мижоз буюртманинг бекор қилиниш имкониятини rel: "cancel" билан ҳаволанинг мавжудлиги ва мазмуни орқали билиши мумкин.

Бир хил интерфейс масштаблашиш ва RESTful тизимларнинг эволюцияси учун жуда муҳим, чунки у компонентлар ўртасидаги боғлиқликни камайтиради.