2015-05-20 20 views
7

Veritabanıma basit sorguları yönetmek için Yii2 gelişmiş uygulamasında bir REST API'si oluşturmaya çalışıyorum. Bazı eğiticileri takiben, son olarak, Hızlı Başlangıç'ta Rehber'deki örneği adım adım oluşturun ve modelimi GET ve HEAD yöntemleri için çalışırken alın.Yii2 REST, POST, PUT, vb üzerinde bir 405 vererek

Bir modül içinde benim API hizmetimi oluşturdum, en az ayarlarla doğru şekilde ayarlayın, arka uç/main.php'de JSON ayrıştırıcısı isteyin, modülü ortak/main.php olarak kaydettirin ve kuralı burada urlManager'da oluşturdu normal kurallar enablePrettyUrl, kontrolör/eylem, ...):

['class' => 'yii\rest\UrlRule', 'controller' => ['precapi']] 

Ama CURL veya Postacı DİNLENME Client üzerinden diğer bazı yöntemler denedik her, her zaman bana hata veriyor:

Method Not Allowed. This url can only handle the following request methods: GET, HEAD.

Sanırım ben ave, onu çözmeye çalışan çok farklı yapılandırmaları ve yolları denedi, ancak hiçbir sonuç vermedi. urlManager'da yalnızca bir şey 'enableStrictParsing' => false', çünkü bazı URL'lerde bana 404 hatası veriyor ve POST, bununla birlikte çalışmıyor, uygulama her zamanki gibi çalışıyor.

Herhangi bir yardım için teşekkür ederiz. Saygılar.

cevap

5

Precapi denetleyicinizin temel özellikleri hakkında daha fazla bilgi almaksızın, bunun \yii\rest\ActiveController türetilmiş olduğunu mu varsayıyorum?

Eğer öyleyse, controller içerisinde verbs() -Fonksiyon geçersiz kılmak için wat olabilir: varsayılan uygulama şudur:

protected function verbs() 
{ 
    return [ 
     'index' => ['GET', 'HEAD'], 
     'view' => ['GET', 'HEAD'], 
     'create' => ['POST'], 
     'update' => ['PUT', 'PATCH'], 
     'delete' => ['DELETE'], 
    ]; 
} 

bence, gerçekten UrlManager ile küçük bir sorun olduğunu yorumlarınızı verilen konfigürasyon, bu yüzden geri bir şeyler okumaktan çıktım ve denetleyiciyi bir modüle eklediğinizi gördüm.
The manual has this to say:

The controller ID (e.g. user, post-comment) that the rules in this composite rule are dealing with. It should be prefixed with the module ID if the controller is within a module (e.g. admin/user).

o sorun olabilir? Bence

+0

Teşekkür kaldırarak çözüldü controller_id

sonra nasıl http://localhost:8080/index.php/module/controller_id/?access-token=_token_here

Not gibi URL şey / ekstra. Evet, ActiveController türetilmiştir. Ancak, belgelerde yazılı olduğu gibi, başka yöntemlerle varsayılan olarak çalışması gerektiğine inanıyorum. ad alanı uygulaması \ modülleri \ denetleyicileri; yii \ rest \ ActiveController; sınıfı DefaultController, ActiveController'ı genişletir VE modeli yalnızca modeli tablodan başlatır. Denemeyi deneyeceğim. – user3627496

+0

Bu uygulama ile aynı sonuçlar. Yine de teşekkürler. – user3627496

+0

Fikir, uygulamayı değiştirip ona 'POST' eklemenizdir. Sadece varsayılanı bir örnek olarak – Blizz

7

Bende olduğunu ve çözüm bulmak için gün boyu öldürdü neden, ben bu konuda soruyorum bu

['class' => 'yii\rest\UrlRule', 'controller' => 'precapi', 'pluralize'=>false], 
0

deneyin sorunu çoğul olduğunu. Çok aptalım. YII2 çerçevesinin bir sorunu değil, ama bu bir curl problemi. Bazı denetleyiciler, eylemler veya davranışlarla değil, sağdaki yazım denetimi komutlarıyla ilgili sorun değil. İşte

yanlış komutu ise - silebilir veya çalışmıyor koymak ve büyüdü 405 hatası:

bukle -i -H "Kabul: application/json" -H "Content-Type: application/json" -XDELETE "http://test.test.in/test "-d '{ "myid": "2"}'

HTTP/1.1 405 Yönteme İzin verilmiyor Sunucusu: nginx/1.8.1 tarihi: Sun, 26 Haziran 2016 07:47:51 GMT İçerik- Tür: uygulama/json; charset = UTF-8 Içerik-Uzunluk: 0 Bağlantı: canlı tut X-Powered by: PHP/5.6.22 izin ver: GET, POST, HEAD burada

Ve SEÇENEKLER

doğru ve doğru şekilde curl emridir: bukle -i -H "Kabul: application/json" -H "Content-Type: application/json" - XDELETE " http://test.test.in/test/2"

HTTP/1.1 204 İçerik yok Sunucusu: nginx/1.8.1 tarihi: Sun, 26 Haziran 2016 07:49:19 GMT Content-Type: application/json; charset = UTF-8 İçerik-Uzunluk: 0 Bağlantı: canlı tutma X-Powered By: PHP/5.6.22

tüm iyi şans getirir!

0

Bugün karşılaştığım olası sorunu ve çözümü eklemek istedim. Onun sahip URL'de ince / benim sorunu ve ekstra /

İlgili konular