我正在尝试如何使用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 的葡萄酒。现在这就是我的理解动摇的地方。当我想添加一个葡萄酒时,我会写一个对GET或POST请求做出不同反应的路由。
$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一起使用。