gpt4 book ai didi

php - 如何为 swagger-php OpenApi 添加接受应用程序/json header

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:19 26 4
gpt4 key购买 nike

我正在使用 L5-Swagger 5.7.* 包(Swagger-php 的包装器)并尝试描述 Laravel REST API。所以,我的代码是这样的:

/**
* @OA\Post(path="/subscribers",
* @OA\RequestBody(
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* type="object",
* @OA\Property(property="email", type="string")
* )
* )
* ),
* @OA\Response(response=201,description="Successful created"),
* @OA\Response(response=422, description="Error: Unprocessable Entity")
* )
*/
public function publicStore(SaveSubscriber $request)
{
$subscriber = Subscriber::create($request->all());
return new SubscriberResource($subscriber);
}

但是当我尝试通过 swagger 面板发送请求时,我得到代码:

curl -X POST "https://examile.com/api/subscribers" -H "accept: */*" -H "Content-Type: application/json" -H "X-CSRF-TOKEN: " -d "{\"email\":\"bademail\"}"

如您所见,accept 不是 application/json 并且 Laravel 不会将其识别为 AJAX 请求。因此,当我发送错误数据并期望得到 422 错误时,我在“ session ”中得到 200 错误代码。通过 swagger 面板的请求 (XHR) 也被错误地处理,CURL 代码只是为了清楚起见。

此外,我发现在以前的版本中使用了类似的东西:

* @SWG\Post(
* ...
* consumes={"multipart/form-data"},
* produces={"text/plain, application/json"},
* ...)

但现在它已经过时了。

那么,如果验证失败,如何在不重定向的情况下获取 422 代码?或者也许添加“XMLHttpRequest” header ?在这里做什么最好?

最佳答案

响应没有指定 mimetype。

 @OA\Response(response=201, description="Successful created"),

如果您指定一个 json 响应,swagger-ui 将发送一个 Accept: application/json header 。

附言。因为 json 是如此常见,swagger-php 有一个 @OA\JsonContent 速记,这适用于响应:

@OA\Response(response=201, description="Successful created", @OA\JsonContent()),

和请求体:

@OA\RequestBody(
@OA\JsonContent(
type="object",
@OA\Property(property="email", type="string")
)
),

关于php - 如何为 swagger-php OpenApi 添加接受应用程序/json header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53168311/

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