0

使用しているツール: Slim Framework & RedBeanPHP

私はこの記事を勉強しています: http://www.ibm.com/developerworks/library/x-slim-rest/と特にこの方法:

// handle POST requests to /articles
$app->post('/articles', function () use ($app) 
{    
try 
{   // get and decode JSON request body
        $request = $app->request();
        $body = $request->getBody();
        $input = json_decode($body); 

        // store article record
        $article = R::dispense('articles');
        $article->title = (string)$input->title;
        $article->url = (string)$input->url;
        $article->date = (string)$input->date;
        $id = R::store($article);    

        // return JSON-encoded response body
        $app->response()->header('Content-Type', 'application/json');
        echo json_encode(R::exportAll($article));

} catch (Exception $e) {
        $app->response()->status(400);
        $app->response()->header('X-Status-Reason', $e->getMessage());
}
});

アプリケーションを実行したり、好きなように更新/入力したりしましたが、記事のようにコンソールに POST のレポートが表示されませんか?

私は見ることを期待しています: http://www.ibm.com/developerworks/library/x-slim-rest/#f5

私のコンソールで。

代わりに、http: //acookson.org/?attachment_id=1221を取得します。

GETリクエストメソッドですよね?では、作成者はどのようにしてブラウザーをだまして、HTML フォームを使用せずに POST 要求として報告させるのでしょうか?

この行で、私はあなたが言うのを聞きます:

// get and decode JSON request body
$request = $app->request();
$body = $request->getBody();
$input = json_decode($body); 

まあ、私は記事を好きなようにコピーしていますが、データベースには何も追加されていません。

CURLで同様のことを達成できます

$ curl -i -X POST -H 'Content-Type: application/json' -d '{"id": "3", "title": "Programming with C++", "url":"http:\/\/www.google.com\/programming\/C++","date":"2013-01-10"}' http://example.localhost/articles
HTTP/1.1 200 OK
Date: Mon, 01 Apr 2013 08:52:50 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.4.6-1ubuntu1.2
Content-Length: 116
Content-Type: application/json

POST
[{"id":3,"title":"Programming with C++","url":"http:\/\/www.google.com\/programming\/C++","date":"2013-01-10"}]

行3がデータベースに追加されました:

mysql> select * from articles\G;
*************************** 1. row ***************************
id: 1
title: Search and integrate Google+ activity streams with PHP applications
url: http://www.ibm.com/developerworks/xml/library/x-googleplusphp/index.html
date: 2012-07-10
*************************** 2. row ***************************
id: 2
title: Getting Started with Zend Server CE
url: http://devzone.zend.com/1389/getting-started-with-zend-server-ce/
date: 2009-03-02
*************************** 3. row ***************************
id: 3
title: Programming with C++
url: http://www.google.com/programming/C++
date: 2013-01-10
3 rows in set (0.00 sec)

私は何が欠けていますか?

4

1 に答える 1

0

あなたが尋ねたことはあまり明確ではありません。

「それはGETリクエストメソッドですよね?では、作成者はどのようにブラウザをだまして、HTMLフォームを使用せずにPOSTリクエストとして報告させるのでしょうか?」

はい、そうです。作成者は、HTML フォームを使用するなど、データを投稿する方法について何も言及していません。

作成者は、ブラウザでレスト クライアント プラグインを使用した可能性があります。おそらく同様のアドオンです。

CURLで同様のことを達成できます

できますよ。

実際、あなたの問題は、スリムまたはphpのコンテキスト内にはありません。

そのため、修正されたタグを使用して、問題をより詳細に明らかにする必要がある場合があります。

于 2013-12-27T09:23:50.277 に答える