【发布时间】:2020-03-20 13:24:00
【问题描述】:
我在我的项目上创建了 API REST 集合,这些集合将在内部(在同一个 PHP 项目中)和外部(从其他项目中)调用
我的问题是:使用内部 API REST 的最佳方式是什么?
我创建了一个函数来以这种方式模拟调用:
// init mock
$env = Environment::mock([
'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => $path,
'QUERY_STRING' => $urlParams,
'HTTP_AUTHORIZATION' => 'Bearer '.$token
]);
$req = Request::createFromEnvironment($env);
// Instantiate CandidateRoute
$app = (new $class)->get();
$app->getContainer()['request'] = $req;
// Run slim inst
ob_flush();
// Run Slim
$response = $app->run(true);
这是可行的,但最终还是一个 HTTP 调用......
还有其他方式使用内部 API REST 吗?
通过 CURL 调用而不是 mocking 更好吗?
是否可以对同一项目中的 API REST 进行多次 HTTP 调用? (我猜没有)
提前致谢!
【问题讨论】:
-
我不认为你在这里做一个真正的 HTTP 调用......这是一个模拟的,不是吗?
-
是的,但我读到我们应该只在测试中使用模拟,而不是在生产中。这就是我尝试使用 Curl 的原因...
-
我记得为什么我首先选择使用 mock:对于 GET curl,我得到一个“414 Request-URI Too Long”。使用模拟时,相同的查询返回 200 OK。我无法更改 apache 参数,也无法将 GET 转换为 POST,所以我完全被 curl 阻止了...... :(
-
我认为在这里使用模拟请求非常有意义。应该也便宜。你在哪里读的不好?
-
stackoverflow.com/a/1211795/7926959 stackoverflow.com/q/367308/7926959 它说模拟仅用于测试而不用于生产。如果您查找“不要在生产中模拟”,那么网上还有其他主题。所以是的,仍然不知道如何使用这个内部 API...
标签: php rest api slim internals