我正在尝试使用苗条框架版本 3 为 API 设置一个项目,我不知道是谁制作了 PSR-7 并将响应对象标记为不可变,我看不出有任何用处(恕我直言。请解释一下如果我错了)。苗条的时候事情要容易得多 2。现在我在很长一段时间后又恢复苗条了。
我有一个发布方法的路线,我正在获取数据并将其保存到数据库中,并且我正在尝试发送 201 作为响应代码。所有示例和文档都向您展示了如何更改 index.php 文件本身中的响应代码,但我试图从响应构建器中更改它,我尝试使用工厂模式来提供不同的响应。问题是无论我从响应构建器类调用什么函数,响应代码始终保持 200。我尝试了许多论坛和不同的瘦身方式,但仍然无法做到这一点。我几乎决定放弃 PSR 7 路由器实施并实施我自己的路由解决方案。但我记得不要重新发明轮子,所以我来到这里作为最后的尝试。下面是代码。
路线定义
$app->post('/users', function(ServerRequestInterface $req, ResponseInterface $res) {
$data = $req->getParsedBody();
$model = new \Apex\Models\User(ApexDB::getInstance());
$jsonBuilder = ApexResponse::getBuilder('JSON', $res);
$control = new \Apex\Controllers\User($model, $jsonBuilder);
$control->create($data);
});
控制器方法(抽象我只是设置它)
public function create($data) {
if($this->model->save($data)) {
$this->response->build($data,201);
} else {
$this->response->build('error',400);
}
}
JSON 构建器
class JSONBuilder implements Response
{
public $response;
public function __construct($response)
{
$this->response = $response;
}
public function build($data, $status)
{
$response = $this->response->withJSON($data,$status);
return $response;
}
}
谁能指出我正确的方向?