我使用的催化劑構建一個RESTful Web服務,所以我創建以通常的方式一臺Catalyst控制器爲什麼curl POST請求會崩潰我的Catalyst :: Controller :: REST控制器?
script/myapp_create.pl controller MyApp::Controller
然後我火了催化劑測試服務器
script/zoo_server.pl -rd
到目前爲止好 - 我現在可以去http://localhost:3000/user
並看到消息「Matched MyApp :: Controller :: User in User」。
我然後用下面一行
BEGIN { extends 'Catalyst::Controller::REST' }
替換的lib/MyApp的/控制器/ User.pm第一BEGIN行做別的任何事情之前,我想檢查我的執行POST請求和手錶的能力響應。因此,在另一個終端窗口,I型
curl http://localhost:3000/user --verbose --data "<test><m>whatever</m></test>" -H "Content-Type: text/xml"
在這一點上,因爲我還沒有實現任何POST方法,我期待看到一個「405不允許的方法」的迴應。相反,我從捲曲中看到的是:
* About to connect() to localhost port 3000 (#0)
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 3000 (#0)
> POST /user HTTP/1.1
> User-Agent: curl/7.19.6 (i386-apple-darwin10.0.0) libcurl/7.19.6 zlib/1.2.5
> Host: localhost:3000
> Accept: */*
> Content-Type: text/xml
> Content-Length: 28
>
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
* Closing connection #0
然後這似乎是催化劑的測試服務器崩潰。服務器不記錄任何東西,但將來嘗試聯繫服務器,例如對「localhost:3000/user」執行另一個GET請求,導致curl中的「無法連接到主機」錯誤。
我注意到,只有當我使用Catalyst :: Controller :: REST時纔會發生這種情況。如果我只是建立一個常規控制器,發佈它並不會導致任何事情崩潰。所以我假設它發生在反序列化操作上,它將被委託給XML :: Simple(按照Catalyst :: Controller :: REST的默認設置)。有任何想法嗎?
我最終想要做的,順便說一句,是創建一個方法,如sub thing :Local :ActionClass('REST') ...
,和相應的sub thing_POST
。我的理解是POST請求包含XML的/ user/thing應該自動得到反序列化並將其放入$c->request->data
,然後調用thing_POST
。上述測試對此是初步的 - 設計用於檢查如果否 POST方法被定義會發生什麼。 (對於它的價值,我得到完全相同的行爲,如果我創建sub thing
和sub thing_POST
,然後使用curl發出POST請求/用戶/東西。)
非常感謝,特別是對於IRC技巧。事實上,正如我現在通過編輯問題所闡明的,如果我發佈到/ user/thing,我會得到相同的行爲。我所看到的似乎是(curl生成的)POST請求崩潰在Catalyst :: Controller :: REST對象中定義的任何操作的一般傾向。發佈到/ user仍然會產生這種效果(由於默認的'index'動作),但是發佈到一個未定義的控制器(例如'/ user/feck/off')不會(我會得到一個「not found」錯誤)。只有REST控制器才能完成。所以我在想我的設置中有些東西壞了。 – user751842 2011-05-13 17:27:46
好吧,我已經試過irc.perl.org上的#catalyst,到目前爲止的震耳欲聾的沉默...似乎沒有人在那裏。從另一方面來說,我所展示的代碼在我的另一臺機器上工作正常,這表明這可能是某種安裝/配置困境。 – user751842 2011-05-14 16:41:22
#催化劑救援......他們實際上對v有幫助 – user751842 2011-05-14 17:54:33