使用 SLIM 框架创建 REST API.与 REST 保持一致,但提供正确的视图


Creating a REST API with SLIM Framework. Keeping in line with REST but providing the correct view

我正在尝试如何使用SLIM创建RESTful API。我了解 REST,并且对 slim 有很好的理解,但我能理解的是如何呈现正确的视图模板。

这是一个典型的 REST API

$app->get('/wines', 'getWines');
$app->get('/wines/:id',  'getWine');
$app->post('/wines', 'addWine');
$app->put('/wines/:id', 'updateWine');
$app->delete('/wines/:id',   'deleteWine');

现在我不明白的是,如果所有路由都具有相同的URL,如何呈现正确的视图模板。第一个GET请求显示所有葡萄酒。下一个 GET 仅显示具有指定 id 的葡萄酒。现在这就是我的理解动摇的地方。当我想添加一个葡萄酒时,我会写一个对GETPOST请求做出不同反应的路由。

$app->map('/wines', function() {
    echo "I respond to multiple HTTP methods!";
})->via('GET', 'POST'); 

因此,对于 get 请求,我想显示一个表单,以便我可以输入新葡萄酒,但由于 URL 与获取所有葡萄酒相同,并且它们都是 GET 请求,我如何呈现正确的模板。

我希望这是有道理的。

谢谢

您应该在对GET /wines/的响应中添加一个描述POST /wines/的表单,并且应该为每个GET /wines/:id -s 添加链接。

您可以将 HAL 用于链接,并对表单使用一些临时解决方案。如果你想要一个更复杂的解决方案,你可以将Hydra与JSON-LD一起使用。