gpt4 book ai didi

json - Symfony2 FOSRestBundle ParamFetcher JSON 错误

转载 作者:行者123 更新时间:2023-12-02 04:48:51 28 4
gpt4 key购买 nike

我有一个带有 FOSRestBundle 的 Symfony2 设置,我正在使用 ParamFetcher。

我现在有一个对其参数有一些要求的路由,我想向 API 用户显示错误消息,但在我当前的设置中,错误消息不会在生产中显示,而在开发中它们是方式广泛。

参数要求

offset
Requirement \d+
Description Result offset
Default 0

limit
Requirement \d+
Description Result limit count
Default 100

注释:

/**
* Get a list of users which can be limited to a certain result count and offset.
*
* Max 30 users per request allowed.
*
* @ApiDoc(
* resource=true,
* description="Load list of users",
* statusCodes={
* 200="Returned when successful",
* 400="Bad user input",
* 500="In case of server error,"
* }
* )
*
* @View()
*
* @param ParamFetcher $paramFetcher
* @param int $offset integer offset (requires param_fetcher_listener: force)
* @param int $limit integer result limit (requires param_fetcher_listener: force)
* @QueryParam(name="offset", description="Result offset", default="0",
* requirements="\d+", strict=true, nullable=true)
* @QueryParam(name="limit", description="Result limit count", default="30",
* requirements="\d+", strict=true, nullable=true)
*
* @return array response array
*/

在生产模式下发出请求:

Request URL
GET /events.json?offset=strangeText&limit=huh!?
Response Headers [Expand]
400 Bad Request

Date: Tue, 02 Jun 2015 20:45:15 GMT
Server: Apache/2
X-Powered-By: PHP/5.5.25
Vary: User-Agent
Content-Type: application/json
Cache-Control: no-cache
Connection: close
Content-Length: 47
Response Body [Raw]
▿{
"error": ▿{
"code": 400,
"message": "Bad Request"
}
}

我已经尝试将 error_message 添加到 Param 规则中,但这并没有产生很好的错误消息。

我应该怎么做才能为 API 最终用户收到一条友好的错误消息?

最佳答案

我们通过实现 ExceptionWrapperHandlerInterface 来做到这一点,参见例如 https://symfony.com/doc/current/bundles/FOSRestBundle/2-the-view-layer.html#forms-and-views :

namespace My\Bundle\Handler;

class MyExceptionWrapperHandler implements ExceptionWrapperHandlerInterface
{
/**
* {@inheritdoc}
*/
public function wrap($data)
{
return new MyExceptionWrapper($data);
}
}

您可以访问 $data 中的大量信息。检查您获得的参数验证异常。

我们没有使用注释参数验证,但是通过扩展 ExceptionWrapper 我们可以,例如在我们的代码中轻松实现类似的东西:

throw new HttpException( 400, 'My custom message' );

关于json - Symfony2 FOSRestBundle ParamFetcher JSON 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30606296/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com