问题标签 [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.
php - 如何使用 Mockery 模拟嵌套对象,如 GuzzleHttp 请求
我在 PHP 中有以下代码:
似乎我成功地为请求创建了一个模拟:
但是,我应该如何使用 Mockery 来模拟getStatusCode
?
它应该返回Psr7\Response
一个GuzzleHttp
.
我知道$clientMock
应该将返回值分配给一个参数,但是我应该如何模拟
和
如果我要模拟getStatusCode
并返回 200,我会收到以下错误:
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
但仍然没有运气。
我错过了什么?如何更改请求以便正确发送文件?
php - 为什么 PSR-7 响应的正文是可变的?
既然 PSR-7 响应应该是不可变的,为什么我要编写这段令人不安的“变异”代码?
在我看来,虽然 Response 本身是不可变的,这意味着我们在调用时会得到一个新对象$response->withHeader(…)
,但我们仍然可以(并且通常会)改变它的 Body 对象(不是响应中最不重要的部分)。
这不矛盾吗?或者它是完全明智的?这对我来说似乎很奇怪。
cookies - 使用 TYPO3 中间件时如何添加 cookie?
我想使用中间件添加 cookie。
在 TYPO3 中,我有Psr\Http\Message\ServerRequestInterface $request
和Psr\Http\Server\RequestHandlerInterface $handler
变量。
添加具有所有必要设置(安全、域、过期)的 cookie 的最佳做法是什么?
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-bridge
和nyholm/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}
我已经完成的正则表达式?
php - 苗条的创建响应与 guzzle 流对于内容
在构建带有流式内容(巨大的 xlsx 文件内容)的苗条(苗条 4)响应时遇到问题。
错误:致命错误:未捕获的 RuntimeException:无法从第 232 行的 /home/vincent/workspace/opco2i_applis/opco2i_porttail/server/vendor/guzzlehttp/psr7/src/Stream.php 中的流中读取
我做了一些检查,文件存在并且可读。如果我在 fopen 调用后执行以下操作:
,我可以阅读我的文件的一些内容。
你能帮我找出为什么 guzzle stream 在这种情况下不能工作吗?
php - PHP 8:将“资源”分配为属性、参数或返回类型
我正在将我的项目从 PHP 7.0 更新到 PHP 8.0,但我无法确定是否允许将其明确指定为resource
数据类型:
- 一个类属性,
- 方法/函数参数的,
- 由方法/函数返回,
我现在所知道的是:
直到现在我读到:
- 有关迁移到 PHP 8 的所有官方手册:PHP:从 PHP 5.5.x 迁移到 PHP 5.6.x,...,PHP:从 PHP 7.4.x 迁移到 PHP 8.0.x;
- PHP.Watch上的全部内容:PHP 版本;
- Lindevs上的全部内容: PHP 。
我在某个地方错过了什么吗?
感谢您的时间。
为了更清楚起见,这就是我想resource
在我的项目中使用数据类型的方式(PSR-7 实现):
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 请求吗?
任何人都可以提供代码示例吗?
非常感谢 !
php - 无法自动装配参数 $request
我的控制器看起来像:
转到此控制器的 URL 后,我收到以下错误:
我的 composer.json 看起来像:
我没有在services.yaml
文件中设置任何内容。
php - 如何制作自定义 PSR-7 ResponseInterface 以减少样板文件?
我正在使用 Slim 4 框架实现一项服务,该框架几乎总是会返回 JSON 响应。我正在尝试使用类似于以下结构的所有响应保持统一:
在最基本的格式中,这是我做出这样的响应所需的代码:
现在,我一直在使用一个基本的帮助类,它基本上将大部分样板文件包装成几个静态函数,所以我可以写一个这样的响应:
但是,现在我遇到了一个问题,我想让响应稍微复杂一些,这需要额外的依赖项,例如自定义序列化程序类。天真的选择是继续将额外的依赖项传递给APIResponse::success($response, $serializer, ..., $data)
,但这显然很糟糕,而且不是一个好的长期选择。
我想到的另一个选择是制作一个APIResponseFactory
,它将接受构造函数中的任何依赖项并通过 PHP-DI 填充。那会更干净一些,但是每个路由处理程序都需要注入工厂,而且我仍然需要$response
每次都手动通过。
所以,我现在正在考虑的是尝试构建一个可以实现的自定义类ResponseInterface
,从而允许我将样板助手自动构建到每个请求处理程序中。我正在查看我的项目中正在使用的当前 PSR7 ResponseInterface 实现,代码注释提到该类永远不应扩展,并建议使用装饰器模式。因此,这是我为当前想法制作的基本伪代码实现。
因此,我(希望)能够返回这样的响应:
我的实际问题:这是为 PSR-7 响应处理程序实现自定义帮助方法的正确方法吗?有没有更好的办法?编写这样的辅助函数是不好的做法吗?由于缺乏更好的描述,PSR-7 接口似乎是低级和冗长的,这让我担心编写这样的包装器会以某种方式违背标准的意图。是否有其他方法可以遵循标准但减少样板并保持响应统一?