SORU
22 Mart 2009, Pazar


Tam olarak Huzurlu programlama nedir?

Tam olarak Huzurlu programlama nedir?

CEVAP
22 Mart 2009, Pazar


DİNLENMEweb mimari temel ilkesidir. Web konuda şaşırtıcı olan istemcileri (tarayıcıları) ve sunucuları istemci olmadan karmaşık yollar önceden bir şey sunucu hakkında bilmek ve barındırdığı kaynakları içinde etkileşim olmasıdır. Anahtar kısıtlaması sunucu hem de istemci üzerinde anlaşmak gerekirmedyaweb durumda kullanılırHTML.

İlkelerine uygun bir APIDİNLENMEistemci API yapısı hakkında hiçbir şey bilmek gerekmez. Bunun yerine, sunucu istemci hizmeti ile etkileşim ihtiyaçlarının giderilmesini sağlamak gerekiyor. BirHTML formbu bir örnektir: sunucu kaynak ve gerekli alanları konumunu belirtir.Tarayıcı bilgisi göndermek için nerede önceden bilmiyor ve göndermek için önceden ne olduğunu bilmiyor. Bilgi her iki formu tamamen sunucu tarafından sağlanır.(Bu prensibi denirHATEOAS.)

Nasıl bu için geçerli buHTTPve pratikte nasıl uygulanabilir?HTTP fiilleri ve kaynakları etrafında odaklı. Yaygın kullanımı iki fiiller herkes tanır sanırım GET ve POST. Ancak, HTTP standart KOYMAK ve SİLME gibi birçok Diğerleri tanımlar. Bu fiiller o zaman kaynaklar için uygulanan, yönergeleri, sunucu tarafından sağlanan göre.

Örneğin, diyelim ki bir web hizmeti tarafından yönetilen kullanıcı bir veritabanı olduğunu hayal edin. Bizim hizmet eden mime tipi atamak JSON, dayalı özel bir hiper ortam kullanırapplication/json userdb(Bir de olabilirapplication/xml userdbvene olursa olsun userdb uygulama/- desteklenen birçok medya türleri). İstemci hem de sunucu bu biçimde anlamak için programlanmıştır, ama birbirleri hakkında hiçbir şey bilmiyorlar. Roy Fielding belirttiği gibi:

Bir REST API açıklayıcı çabaları neredeyse tüm harcamak gerekir media type(s) kaynakları temsil etmek için kullanılan tanımlama ve sürüş uygulama durumu, ya da isim ve/veya uzun ilişki tanımlama köprü metni-etkin mevcut standart kağıt türleri için işaretleyin.

Temel kaynak / isteği böyle bir şey döndürebilir

İstek

GET /
Accept: application/json userdb

Yanıt

200 OK
Content-Type: application/json userdb

{
    "version": "1.0",
    "links": [
        {
            "href": "/user",
            "rel": "list",
            "method": "GET"
        },
        {
            "href": "/user",
            "rel": "create",
            "method": "POST"
        }
    ]
}

Bölüm adı ile ilgili kaynaklar hakkında bilgi bulabilirsiniz bizim medya açıklaması biliyoruz "bağlantılar". Bu denirHiper kontrol eder. Bu durumda, kullanıcı için başka bir istek yaparak kullanıcı listesini bulabiliriz böyle bir bölümünden söyleyebiliriz:

İstek

GET /user
Accept: application/json userdb

Yanıt

200 OK
Content-Type: application/json userdb

{
    "users": [
        {
            "id": 1,
            "name": "Emil",
            "country: "Sweden",
            "links": [
                {
                    "href": "/user/1",
                    "rel": "self",
                    "method": "GET"
                },
                {
                    "href": "/user/1",
                    "rel": "edit",
                    "method": "PUT"
                },
                {
                    "href": "/user/1",
                    "rel": "delete",
                    "method": "DELETE"
                }
            ]
        },
        {
            "id": 2,
            "name": "Adam",
            "country: "Scotland",
            "links": [
                {
                    "href": "/user/2",
                    "rel": "self",
                    "method": "GET"
                },
                {
                    "href": "/user/2",
                    "rel": "edit",
                    "method": "PUT"
                },
                {
                    "href": "/user/2",
                    "rel": "delete",
                    "method": "DELETE"
                }
            ]
        }
    ],
    "links": [
        {
            "href": "/user",
            "rel": "create",
            "method": "POST"
        }
    ]
}

Bu yanıtı pek çok şey söyleyebiliriz. Örneğin, biz şimdi /kullanıcı göndererek yeni bir kullanıcı yaratmak için:

İstek

POST /user
Accept: application/json userdb
Content-Type: application/json userdb

{
    "name": "Karl",
    "country": "Austria"
}

Yanıt

201 Created
Content-Type: application/json userdb

{
    "user": {
        "id": 3,
        "name": "Karl",
        "country": "Austria",
        "links": [
            {
                "href": "/user/3",
                "rel": "self",
                "method": "GET"
            },
            {
                "href": "/user/3",
                "rel": "edit",
                "method": "PUT"
            },
            {
                "href": "/user/3",
                "rel": "delete",
                "method": "DELETE"
            }
        ]
    },
    "links": {
       "href": "/user",
       "rel": "list",
       "method": "GET"
    }
}

Biz mevcut verileri değiştirebiliriz o da biliyor:

İstek

PUT /user/1
Accept: application/json userdb
Content-Type: application/json userdb

{
    "name": "Emil",
    "country": "Bhutan"
}

Yanıt

200 OK
Content-Type: application/json userdb

{
    "user": {
        "id": 1,
        "name": "Emil",
        "country": "Bhutan",
        "links": [
            {
                "href": "/user/1",
                "rel": "self",
                "method": "GET"
            },
            {
                "href": "/user/1",
                "rel": "edit",
                "method": "PUT"
            },
            {
                "href": "/user/1",
                "rel": "delete",
                "method": "DELETE"
            }
        ]
    },
    "links": {
       "href": "/user",
       "rel": "list",
       "method": "GET"
    }
}

Farklı HTTP fiiller (GET PUT, DELETE vb. SONRASI) kullanıyoruz dikkat edin müşteriler kısmında olduğumuzu tahmin sadece bilgi bizim medya tanımı bu kaynakları işlemek için, ve.

Daha fazla bilgi için:

(Bu cevap bu konu için eleştiri adil bir miktar konu olmuştur. Çoğunlukla, bu adil bir eleştiri olmuştur. Aslında tarif ne genellikle bunu ilk yazdığımda bir kaç yıl önce nasıl uygulandığını yerine, gerçek anlamı ile daha uyumlu oldu. Cevap daha iyi gerçek anlamını göstermek için revize ettim.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006