问题标签 [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 回答
284 浏览

php - 如何使用 Mockery 模拟嵌套对象,如 GuzzleHttp 请求

我在 PHP 中有以下代码:

似乎我成功地为请求创建了一个模拟:

但是,我应该如何使用 Mockery 来模拟getStatusCode

它应该返回Psr7\Response一个GuzzleHttp.

我知道$clientMock应该将返回值分配给一个参数,但是我应该如何模拟

如果我要模拟getStatusCode并返回 200,我会收到以下错误:

0 投票
1 回答
694 浏览

php - 带有多部分/表单数据的 Guzzle PSR7 请求

我在 Lumen(应用程序 A)中创建了一个简单的 API,它:

  • 接收 PSR-7 请求接口
  • 替换对应用程序 B 的请求的 URI
  • 并通过Guzzle发送请求。

上面的代码将查询参数、x-www-form-urlencoded 或 JSON 内容类型的数据传递给应用程序 B。但是,它无法传递 multipart/form-data。(该文件在应用程序 A: 中可用$psrRequest->getUploadedFiles())。

编辑 1

我尝试用Buzz替换 Guzzle 调用

但是,这并没有什么不同。

编辑 2

ServerRequestInterface 的实例表示服务器端的请求。Guzzle 和 Buzz 正在使用 RequestInterface 的实例来发送数据。RequestInterface 缺少对上传文件的抽象。所以文件应该手动添加http://docs.guzzlephp.org/en/stable/request-options.html#multipart

但仍然没有运气。

我错过了什么?如何更改请求以便正确发送文件?

0 投票
1 回答
272 浏览

php - 为什么 PSR-7 响应的正文是可变的?

既然 PSR-7 响应应该是不可变的,为什么我要编写这段令人不安的“变异”代码?

在我看来,虽然 Response 本身是不可变的,这意味着我们在调用时会得到一个新对象$response->withHeader(…),但我们仍然可以(并且通常会)改变它的 Body 对象(不是响应中最不重要的部分)。

这不矛盾吗?或者它是完全明智的?这对我来说似乎很奇怪。

0 投票
2 回答
237 浏览

cookies - 使用 TYPO3 中间件时如何添加 cookie?

我想使用中间件添加 cookie。

在 TYPO3 中,我有Psr\Http\Message\ServerRequestInterface $requestPsr\Http\Server\RequestHandlerInterface $handler变量。

添加具有所有必要设置(安全、域、过期)的 cookie 的最佳做法是什么?

0 投票
1 回答
211 浏览

php - 可以使用正则表达式进行 PSR-7 验证吗?(参数冲突)

我目前正在通过 Symfony (5.1) Routes 和 NelmioApiDocBundle 生成 OpenAPI 注释,

其中一条路线如下所示:

和另一个喜欢

我正在使用 League 的 OpenAPI PSR-7 消息验证器(https://github.com/thephpleague/openapi-psr7-validator),通过将 Symfony 请求转换为 PSR-7 请求symfony/psr-http-message-bridgenyholm/psr7。除了这两个端点外,一切都运行良好。我不断得到

The given request matched these operations: [/api/users/{id},get],[/api/charter-calculations/followed,get]. However, it matched not a single schema of theirs.

是否有可能/followed只能匹配/{id}?因此验证者会感到困惑?或者是{id}我已经完成的正则表达式?

0 投票
1 回答
354 浏览

php - 苗条的创建响应与 guzzle 流对于内容

在构建带有流式内容(巨大的 xlsx 文件内容)的苗条(苗条 4)响应时遇到问题。

错误:致命错误:未捕获的 RuntimeException:无法从第 232 行的 /home/vincent/workspace/opco2i_applis/opco2i_porttail/server/vendor/guzzlehttp/psr7/src/Stream.php 中的流中读取

我做了一些检查,文件存在并且可读。如果我在 fopen 调用后执行以下操作:

,我可以阅读我的文件的一些内容。

你能帮我找出为什么 guzzle stream 在这种情况下不能工作吗?

0 投票
1 回答
654 浏览

php - PHP 8:将“资源”分配为属性、参数或返回类型

我正在将我的项目从 PHP 7.0 更新到 PHP 8.0,但我无法确定是否允许将其明确指定resource数据类型:

  • 一个类属性
  • 方法/函数参数的,
  • 由方法/函数返回

我现在所知道的是:

  • resource是构建混合类型的类型之一,
  • 一些内部函数,如fopen,正在返回 type resource

直到现在我读到:

我在某个地方错过了什么吗?

感谢您的时间。


为了更清楚起见,这就是我想resource在我的项目中使用数据类型的方式(PSR-7 实现):

0 投票
0 回答
102 浏览

migration - TYPO3 10.4:在 PSR-15 中间件中启动自定义 GET 参数

是否可以在 TYPO 3 10.4.x 的 PSR15 中间件中添加(或更好:启动)自定义 _GET 参数?

在我的 PSR-15 中间件中的 TYPO3 9.5.x 中,我可以这样做:

$myValue 之前是从一个数组中找到的,该数组分析了该中间件中的自定义 PathSegment。(参见TYPO3 9.5:在语言/路由增强器之后放置一个自定义路径段

如果我在 TYPO3 10.4.x 中做同样的事情,那么 $_GET['C'] 在以后的任何其他扩展中都不可用,换句话说:它没有设置。

我可以在 psr15 中间件中修改 psr7 请求吗?

任何人都可以提供代码示例吗?

非常感谢 !

可能与以下弃用有关: https ://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/9.5/Deprecation-86389-GeneralUtility_GETsetAndTSFE-mergingWithGetVars.html

0 投票
2 回答
241 浏览

php - 无法自动装配参数 $request

我的控制器看起来像:

转到此控制器的 URL 后,我收到以下错误:

我的 composer.json 看起来像:

我没有在services.yaml文件中设置任何内容。

0 投票
2 回答
282 浏览

php - 如何制作自定义 PSR-7 ResponseInterface 以减少样板文件?

我正在使用 Slim 4 框架实现一项服务,该框架几乎总是会返回 JSON 响应。我正在尝试使用类似于以下结构的所有响应保持统一:

在最基本的格式中,这是我做出这样的响应所需的代码:

现在,我一直在使用一个基本的帮助类,它基本上将大部分样板文件包装成几个静态函数,所以我可以写一个这样的响应:

但是,现在我遇到了一个问题,我想让响应稍微复杂一些,这需要额外的依赖项,例如自定义序列化程序类。天真的选择是继续将额外的依赖项传递给APIResponse::success($response, $serializer, ..., $data),但这显然很糟糕,而且不是一个好的长期选择。

我想到的另一个选择是制作一个APIResponseFactory,它将接受构造函数中的任何依赖项并通过 PHP-DI 填充。那会更干净一些,但是每个路由处理程序都需要注入工厂,而且我仍然需要$response每次都手动通过。

所以,我现在正在考虑的是尝试构建一个可以实现的自定义类ResponseInterface,从而允许我将样板助手自动构建到每个请求处理程序中。我正在查看我的项目中正在使用的当前 PSR7 ResponseInterface 实现,代码注释提到该类永远不应扩展,并建议使用装饰器模式。因此,这是我为当前想法制作的基本伪代码实现。

因此,我(希望)能够返回这样的响应:

我的实际问题:这是为 PSR-7 响应处理程序实现自定义帮助方法的正确方法吗?有没有更好的办法?编写这样的辅助函数是不好的做法吗?由于缺乏更好的描述,PSR-7 接口似乎是低级和冗长的,这让我担心编写这样的包装器会以某种方式违背标准的意图。是否有其他方法可以遵循标准但减少样板并保持响应统一?