我使用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);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试通过swagger面板发送请求时,我得到了代码:
curl -X POST "https://examile.com/api/subscribers" -H "accept: */*" -H "Content-Type: application/json" -H "X-CSRF-TOKEN: " -d "{\"email\":\"bademail\"}"
Run Code Online (Sandbox Code Playgroud)
如您所见,accept不是application / json,并且Laravel不会将其识别为AJAX请求。因此,当我发送错误的数据并期望实际获得422错误时,我在“会话”中获得200错误代码。通过招摇面板的请求(XHR)也会被错误地处理,CURL代码只是为了清楚起见。
另外,我发现在以前的版本中使用了类似以下内容:
* @SWG\Post(
* ...
* consumes={"multipart/form-data"},
* produces={"text/plain, …Run Code Online (Sandbox Code Playgroud)