Kullanım SİLMEK POST KOYMAK neden API - ELDE KALAN?
Yani, REST API oluşturma ile ilgili bazı makaleler bakıyordum.
PUT
10* POST
GET
*gibi.ve onlara bazı HTTP istekleri her türlü kullanmanızı öneririz:
Örneğin oluşturmak istiyoruzindex.phpve API bu şekilde yazmak:
$method = $_SERVER['REQUEST_METHOD'];
$request = split("/", substr(@$_SERVER['PATH_INFO'], 1));
switch ($method) {
case 'PUT':
....some put action....
break;
case 'POST':
....some post action....
break;
case 'GET':
....some get action....
break;
case 'DELETE':
....some delete action....
break;
}
TAMAM, web servisleri hakkında pek bir şey bilmiyorum verilen (henüz).
Sadece kabul etmek daha kolay olmaz amaJSONdüzenli POST
GET
(Bu yöntem adı ve parametreler içerir) nesne ve JSON olarak cevap verin o zaman. Kolayca PHP json_encode()
json_decode()
)/serisini seri hale getirmek ve bu veri ile istediğimiz her şeyi HTTP isteği farklı yöntemler ile uğraşmak zorunda kalmadan yapabiliriz.
Bir şey mi kaçırdım?
GÜNCELLEME 1:
Tamam - çeşitli API aracılığıyla kazma ve hakkında çok şey öğrendikten sonraXML-RPC,JSON-RPC,SABUN,DİNLENMEAPI bu tür bir ses bir sonuca geldim. Aslında stack exchange oldukça sitelerinde bu yaklaşım kullanıyor ve bu insanlar Stack Exchange API ne yaptıklarının farkında olduğunu düşünüyorum.
CEVAP
FikriREgörselStateTransfer mümkün olan en basit şekilde veri erişimi konusunda değil.
/Access son derece geçerli bir şekilde JSON, erişmek için post isteği kullanarak önerdi.
DİNLENMEK için bir yöntemdiranlamlıveri erişim. DİNLENME isteği gördüğünüzde, hemen veri ile neler olduğunu apparant olmalıdır.
Örneğin:
GET: /cars/make/chevrolet
büyük olasılıkla chevy araba listesi dönecek.İyi bir DİNLENME apı bile ?output=json
veya erişimci bilgileri kodlanmış olarak ne olması gerektiğine karar vermek sağlayacak ?output=html
gibi sorgu dizesi bazı çıktı seçenekleri dahil olabilir.
Sonra biraz düşünmek ne kadar makul dahil veri yazma içine bir REST API, geldim sona en iyi şekilde belirtmek türü veri açıkça olurdu ile zaten varolan dosya uzantısı gibi .js
, .json
, .html
, veya .xml
. Eksik bir dosya uzantısı varsayılan ne olursa olsun öntanımlı (JSON gibi); tarafından desteklenmeyen bir dosya uzantısı 501 Not Implemented
status code bir dönüş olabilir.
Başka bir örnek:
POST: /cars/
{ make:chevrolet, model:malibu, colors:[red, green, blue, grey] }
büyük olasılıkla ilişkili renkleri ile db yeni chevy malibu yaratacak. Derimbüyük olasılıkladiğerleri gibi apı veritabanı yapısı ile doğrudan ilgili olması gerekmez. Gerçek verileri (veritabanı yapısı için erişimci ve mutators gibi düşün) korunur böylece maskeleme bir ara yüzdür sadece.
Şimdi idempotence konunun üzerine gitmeliyiz. Genellikle DİNLENME uygular HTTP üzerinden CRUD. HTTP istekleri içinGET
, PUT
, POST
ve DELETE
kullanır.
Geri KALAN çok basit bir uygulamaolabiliraşağıdaki ÇÖP eşleme kullanın:
Create -> Post
Read -> Get
Update -> Put
Delete -> Delete
Bu uygulama ile ilgili bir sorun var: Yazı olmayan idempotent bir yöntem olarak tanımlanır. Bu aynı Post yöntemi sonraki aramalar sonuç anlamına gelirfarklısunucu Birleşik Devletleri. Get, Put, Delete, onları birden çok kez arayıp aynı server bir devlet neden bunun anlamı, idempotent;.
Bu bir istek gibi anlamına gelir:
Delete: /cars/oldest
aslında olarak uygulanabilir:
Post: /cars/oldest?action=delete
Oysa
Delete: /cars/id/123456
eğer bir kere ararsan aynı sunucu durumu neden olur, ya da eğer bunu 1000 kez adını.
oldest
maddenin kaldırılması işleme daha iyi bir şekilde talep etmek olacaktır:
Get: /cars/oldest
ve elde edilen verileri ID
delete
bir istek yapmak için kullanın:
Delete: /cars/id/[oldest id]
Bu yöntem ile ilgili bir sorun varsa /cars
başka bir öğe /oldest
talep edildiği zaman ve delete
verildiği arasına eklendi.
Nereye ve neden&; şablon" quot; ve...
Neden Java Vector sınıfı eski veya kul...
Neden koymak gerekiyor mu #!//komut do...
Neden't JavaScript çoklu kullanım...
Neden hep elde ettik sonunda bir null ...