如何在 Laravel 项目中使用 Swagger

http://swagger.io/getting-started/

安装依赖 swagger-php

composer require zircote/swagger-php

创建 SwaggerController,用于为了 swagger-php 提供 json 数据

php artisan make:controller SwaggerController

给 SwaggerController 加上 SwaggerJSON 数据的处理:

SwaggerController.php 

use Illuminate\Http\Request;

use Swagger\Annotations as SWG;

/**
 *
@SWG\Swagger(
 *     schemes={"http","https"},
 *     host="api.host.com",
 *     basePath="/",
 *    
@SWG\Info(
 *         version="1.0.0",
 *         title="This is my website cool API",
 *         description="Api description...",
 *         termsOfService="",
 *        
@SWG\Contact(
 *             email="contact@mysite.com"
 *         ),
 *        
@SWG\License(
 *             name="Private License",
 *             url="URL to the license"
 *         )
 *     ),
 *    
@SWG\ExternalDocumentation(
 *         description="Find out more about my website",
 *         url="http..."
 *     ),

*      // define tag

*     @SWG\Tag(name="Home", description="Roote Route"),
*    
@SWG\Tag(name="User", description="UserController"),
*    
@SWG\Tag(name="Role", description="RoleController"),
*    
@SWG\ExternalDocumentation(
*         description="Find out more about my website",
*         url="http..."
*     ),
*   
@SWG\Definition(
*       definition="errorModel",
*       required={"status code", "message"},
*      
@SWG\Property(
*           property="status code",
*           type="integer",
*           format="int32"
*       ),
*      
@SWG\Property(
*           property="message",
*           type="string"
*       )
*   ),

*    // 定义 API
*  
@SWG\Definition(
*     definition="Login",
*     
@SWG\Property(
*        property="useraccount",
*        type="string"
*      ),
*     
@SWG\Property(
*         property="password",
*         type="string"
*      )
*    ),
*   
@SWG\Definition(
*       definition="logout",
*      
@SWG\Property(
*           property="token",
*           type="string"
*       )
*   ),
* )
 */

class SwaggerController extends Controller

{

public function doc()

{

$swagger = \Swagger\scan(realpath(__DIR__.’/../../’));

return response()->json($swagger);

}

}

具体 UserController.php 中 Swagger Definition

/**
 *
@SWG\Post(
 *     path="/user/login",
 *     summary="Sign in",
 *     tags={"User"},
 *     operationId="Login",
 *     description="Login",
 *     produces={"application/json"},
 *    
@SWG\Parameter(
 *         name="account & password",
 *         in="body",
 *         description="Login",
 *         required=true,
 *        
@SWG\Schema(ref="#/definitions/Login"),
 *     ),
 *    
@SWG\Response(
 *         response=200,
 *         description="It's ok"
 *     ),
 *    
@SWG\Response(
 *         response="default",
 *         description="unexpected error",
 *        
@SWG\Schema(ref="#/definitions/errorModel")
 *     )
 * )
 *
@param Request $request
 *
@return \Illuminate\Http\JsonResponse
 */
public function login( Request $request)
{
    $arr_user_info = [];
    $ret = $this->validateLogInfo($request, $arr_user_info);

if ($ret) {
        return $ret;
    }

$ret = $this->verifyLogInfo($arr_user_info);

if ($ret) {
        return $ret;
    }
}

在 Laravel 中使用 Swagger 出现报错总结:

  1. ErrorException in Logger.php line 38: Required @SWG\Info() not found

方法: use Swagger\Annotations as SWG;

The problem is - you're missing the @SWG\Info block. It's a block which tells swagger some most common information about your API.

I usually put this in a separate controller which is rendering swagger JSON. Here's an example:

还必须在类定义的前面,添加上下面的这段:

  1. Can't read swagger JSON

检查 JSON 接口 URL 时候正确

安装使用参考教程:https://segmentfault.com/a/1190000004980342

[Laravel-Swagger]如何在 Laravel 项目中使用 Swagger的更多相关文章

  1. 如何在spring-boot web项目中启用swagger

    swagger的三个项目及其作用 我们打开swagger的官网,会发现有三个swagger相关的项目,它们分别是 swagger-editor 作用是通过写代码,生成文档描述(一个json文件或其他格 ...

  2. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  3. 如何在NodeJS项目中优雅的使用ES6

    如何在NodeJS项目中优雅的使用ES6 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性.只是在使用的时候需要在node后面加 ...

  4. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  5. 如何在mvc项目中使用apiController

    文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...

  6. 如何在Ionic2项目中使用第三方JavaScript库

    onic的官网放出一记大招Ionic and Typings,来介绍如何在Ionic2项目中使用第三方JavaScript库. 因为在前阵子正好想用一个非常有名的第三方JS库ChartJs来实现一些东 ...

  7. 如何在maven项目中使用spring

    今天开始在maven项目下加入spring. 边学习边截图. 在这个过程中我新建了一个hellospring的项目.于是乎从这个项目出发开始研究如何在maven项目中使用spring.鉴于网上的学习资 ...

  8. 如何在Vue-cli项目中使用JTopo

    1.前言 jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系.拓扑图形化界面开发工具包.其体积小,性能优异,由一群开发爱好者来维护.唯一感 ...

  9. 如何在Vue项目中给路由跳转加上进度条

    1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...

随机推荐

  1. composer 安装

    安装composer wget http://curl.haxx.se/ca/cacert.pem curl -sS https://getcomposer.org/installer | php - ...

  2. 拓扑排序(topsort)

    本文将从以下几个方面介绍拓扑排序: 拓扑排序的定义和前置条件 和离散数学中偏序/全序概念的联系 典型实现算法解的唯一性问题 Kahn算法 基于DFS的算法 实际例子 取材自以下材料: http://e ...

  3. Android框架之AndroidAnnotations基础

    一:开源网址 https://github.com/excilys/androidannotations/wiki 二:AndroidAnnotation特点 (1)依赖注入 可以注入 views, ...

  4. 学习总结relative和absolute

    之前对于absolute和relative不了解,现在整理 先设置relative再设置absolute 因为父不设置relative 那么子会向上寻找祖先元素,看是否设置relative.如果有则相 ...

  5. Oracle中执行存储过程call和exec区别

    Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...

  6. 百度地图定位经纬度返回4.9E-324有关问题

    1.查看你的应用是否有权限查看你的地理位置信息,有可能是你没有加上权限,或者当你第一次打开app时询问你是否给予软件权限查看你的地理位置信息,你选择了否,所以经纬度就一直返回4.9E-324 2.查看 ...

  7. 了解Hadoop和大数据

    1. 场景: 现在人产生数据越来越快,机器则更快,所以需要另外的一种处理数据的方法.   硬盘容量增加,但是性能没跟上,解决办法是将数据分到多块硬盘,然后同时读取. 问题:     硬件问题 -- 复 ...

  8. Bootstrap组件

    1.Bootstrap组件——Glyphicons图标字体 图标字体:可以表示的文字不是abcd或1234,而是一个又一个图形符号,比直接使用图片好处:可以任意放大不会失真:所有能使用文字的地方都可以 ...

  9. Ubuntu16.04下安装.NET Core

    以下为控制台输入代码序列一.sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet ...

  10. win7环境下安装运行gotour【转载整理】

    转载请注明出处:http://www.cnblogs.com/Vulpers/p/5562586.html 最近尝试学习golang,在某个网站(真忘了)上发现gotour是一款灰常叼的教程& ...