问题标签 [psr-7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
637 浏览

php - 将 PSR-7 响应转换为 Symfony 响应

我编写了一个实现 PSR-7 接口的自己的 HTTP 库。我在第二个库中使用这个库,该库执行一些业务逻辑,并可能返回 PSR-7 标准中的响应或请求。

对于我的应用程序,我使用 Silex / Symfony 模块。在控制器中,我必须返回一个 Symfony 响应。

如何将 PSR-7 响应转换为 Symfony 响应?我只发现反之亦然的桥梁,将 Symfony 响应转换为 PSR-7 响应。

0 投票
1 回答
323 浏览

php - Zend PSR7 不能在 Lumen 上工作?

Zend PSR7 似乎不适用于 Lumen:

第一个“错误”:

第二个错误:

任何想法为什么?

Slim3 似乎更容易,更直接!

0 投票
1 回答
2638 浏览

php - 如何使用 PSR-7 响应?

我的应用程序中的大多数响应是视图或 JSON。我不知道如何将它们放在ResponseInterfacePSR -7中实现的对象中。

这是我目前所做的:

这是我试图用 PSR-7 做的事情:

而且我认为 JSON 响应只是具有不同的标头,这将是相似的。据我了解,消息正文是 aStreamInterface并且当我尝试输出创建的文件资源时它可以工作,fopen但我如何使用字符串来做到这一点?

更新

Http\Response在我的代码中实际上是我自己ResponseInterface在 PSR-7 中的实现。我已经实现了所有接口,因为我目前坚持使用 PHP 5.3,并且找不到任何与 PHP < 5.4 兼容的实现。这是 的构造函数Http\Response

我可以修改我的实现以接受输出作为构造函数参数,或者我可以使用实现的withBody方法MessageInterface。不管我怎么做,问题是如何将字符串放入流中

0 投票
2 回答
1250 浏览

php - 新的(Json)响应显示空白页(Symfony HttpFoundation)

我在我的小项目中使用 HttpFoundation:use \Symfony\Component\HttpFoundation\JsonResponse as JsonResponse;

不幸的是,我所有的回复(尝试过JsonResponseResponseBinaryFileResponse)只返回一个空白页,没有错误并且代码正常执行,例如

日志中也没有错误。

任何想法如何解决这个问题?

//更新澄清

返回HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: application/json {"result":"error","message":"Encrypt is invalid or missing"}

但为什么不起作用return

0 投票
2 回答
17175 浏览

guzzle - Guzzle 未正确发送 PSR-7 POST 正文

它要么没有被发送,要么没有被正确接收。curl从命令行直接使用(使用 -d 选项)或从 PHP(使用 CURLOPT_POSTFIELDS)确实有效。

我从 PSR-7 请求开始:

我添加了身份验证标头,它正确地针对 API 进行身份验证:

然后我添加请求正文:

我可以将消息发送到 API:

我得到的响应表明 API 根本没有看到“args”参数。我尝试将身份验证令牌移动到 args:

这应该可以工作,并且可以在命令行 ( -d access_token=123456789) 中使用 curl,但是在发送 cia curl (6.x) 时,API 也无法看到该参数。

我可以看到消息确实包含正文:

那么这里可能出了什么问题呢?是参数没有被发送,还是以错误的格式发送(可能'='被编码?),或者可能使用了错误的内容类型?使用 Guzzle 时很难看到“在线”发送的内容,因为 HTTP 消息经过格式化并发送了很多层。

编辑:调用本地测试脚本而不是远程 API,我得到这个原始消息详细信息:

所以看起来身体被发送,所以我想还缺少其他东西来告诉远程 API 如何解释那个身体。

编辑:确实有效的命令行 curl 发送到相同的测试脚本,在请求中为我提供了两个额外的标头字段:

我猜这是 Guzzle 请求中缺少的内容类型标头,这是问题的根源。那么这是一个 Guzzle 错误吗?它不应该总是根据文档中列出的假设发送 Content-Type吗?

0 投票
1 回答
891 浏览

php - Sf2 重定向响应不起作用

我在我的项目中使用了HttpFoundation 组件,而没有使用完整的 Symfony2 框架。如果某些凭据为真并重定向用户(如文档中所述),我尝试进行RedirectResponse,但该语句不起作用。return

我有:

当我执行这个时没有任何反应。但如果我这样做,我会成功重定向到 Google:

为什么这适用于echo但不适用return?我不想echo在我的类库中使用。

有什么解决办法吗?

0 投票
1 回答
1256 浏览

php - 将请求从 CURL 转换为 PHP 的 Guzzle 以访问 WHMCS API

我正在尝试学习最新版本的 Guzzle (6.2) 并将我的 cURL 请求转换为 WHMCS API。

使用来自: http ://docs.whmcs.com/API:JSON_Sample_Code的示例代码

我还没有弄清楚如何让同样的东西与 Guzzle 一起工作。

这是我尝试过的:

对于以前使用过 Guzzle 的人来说,这很可能是一个非常明显的答案。

我在哪里错了?

0 投票
1 回答
968 浏览

php - 苗条的框架 PSR 无法识别自定义标头

以下是我正在使用的代码。

我在谷歌浏览器中使用邮递员来测试这个 REST 服务。我将自定义标头“授权”与 GET 请求一起传递。但是,该程序无法识别任何自定义标头。

代码块

仅返回标头“HTTP_ACCEPT_LANGUAGE”。

请帮我弄清楚,这里出了什么问题。

0 投票
2 回答
1091 浏览

php - PSR7 请求:在 Slim3 中获取类似 $_REQUEST 的请求数据

我正在使用 Slim3 作为路由器的 PSR-7 请求重构我的应用程序。在我的一些入口点上,我收到了来自外部应用程序的 GET 和 POST HTTP 请求。GET 和 POST 都使用相同的参数名称。在旧代码中,一个简单的$_REQUEST的解决了这个问题,但我不想再使用超全局变量了。

为了获取 GET-Request 的参数,我使用以下代码:

对于 POST 请求,我使用:

是否有解决问题的 PSR-7 功能,还是我array_merge()每次都必须使用?

0 投票
2 回答
572 浏览

php - Zend\Http\Client 作为 Zend Expressive 的 PSR-7 中间件

我们应该如何添加Zend\Http\Client(或其他模块)作为 PSR-7 中间件?

首先我认为是:

案例行动

  • 添加工厂
  • 注入Zend\Http\Client实例
  • Zend\Http\Client在 Action 中使用实例,例如$client->request('GET');

但我不确定这是否正确。它应该实现MiddlewareInterface并提供一种__invoke方法吗?

编辑:感谢@xtreamwayz 和@timdev https://stackoverflow.com/a/37928824/3411766 https://stackoverflow.com/a/37934597/3411766

所以我会按原样使用客户端。正如@timdex 通过工厂提到的那样,通过容器-> 获取它。谢谢两个=)