3
This is the web service file _ws.php
<?php
/*
 Title: Hello World Example.
 Tagline: Let's say hello!.
 Description: Basic hello world example to get started with Restler 2.0.
 Example 1: GET say/hello returns "Hello world!".
 Example 2: GET say/hello/restler2.0 returns "Hello Restler2.0!".
 Example 3: GET say/hello?to=R.Arul%20Kumaran returns "Hello R.Arul Kumaran!".
 */
require_once '../restler/restler.php';
require_once 'news_class.php';
$r = new Restler();
$r->addAPIClass('news');
$r->handle();

これは、関数を含むクラス ファイルです。

<?php
class news {
    function hello($to='world') {
        return "Hello $to!";
    }

    function listnews($page=0){
        $result = "";

        $xml_doc = new DOMDocument;
        $xml_doc->load('news.xml');

        $xsl_doc = new DOMDocument;
        $xsl_doc->load('news_list.xsl');

        $xsl_proc = new XSLTProcessor();
        $xsl_proc->importStyleSheet($xsl_doc);
        $xsl_proc->setParameter('', 'page', $page);
        $result = $xsl_proc->transformToXml($xml_doc);

        return $result;
    }


} // news -

listnews 関数に listNews という名前を付けると、次のエラーが発生します。

{
  "error": {
    "code": 404,
    "message": "Not Found"
  }
}

名前が大文字と小文字が混在している限り、機能します。ひょっとしてこういうことなのかな?キャメルケーシングを使用する方法はありますか?

どうも!

4

2 に答える 2

0

@richard_askewによる回答の更新、彼は正しいです。

Restlerバージョン2.1.5以下で自動ルーティングを使用する場合、URLに配置するときは、クラス名、メソッド名、およびパラメーター名をすべて小文字にする必要があります。

この動作を変更するRestlerバージョン2.1.6をリリースしました:)

これで、クラス名、メソッド名、およびURLで指定されたパラメーター名(上位または下位または混合)が正しいメソッドと一致するようになります

于 2012-05-15T01:05:28.533 に答える
0

これを再訪するために、コードをいじってみましたが、同様の動作をしています。メソッドの次の命名規則により、404 エラーが発生します。

mysite.com/myclass/testMethod
mysite.com/myclass/TestMethod

次の作業は期待どおりです

mysite.com/myclass/testmethod
mysite.com/myclass/test_method

キャメルケースを動作させる方法はありますか?

更新: メソッド名がエラーの原因ではないようです。たとえば、testMethod という名前を付けても、小文字で呼び出すことができます。

于 2012-03-26T09:54:04.143 に答える