1. 程式人生 > >NelmioApiDocBundle自動生成文件(譯)

NelmioApiDocBundle自動生成文件(譯)

NelmioApiDocBundle

NelmioApiDocBundle是一個開源的Symfony組建,能夠自動生成每個bundle以及內部每個action的document,並支援sandbox測試,可以手動變數輸入,非常方便api的開發。

如何安裝

把下面的程式碼新增到composer.json檔案中

{
    "require": {
        "nelmio/api-doc-bundle": "dev-master"
    }
}

在核心檔案中app/AppKernel.php新增相應的bundle資訊

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
    );
}

修改路由配置檔案routing.yml,新增路徑,以後就可以通過api/doc直接訪問

# app/config/routing.yml
NelmioApiDocBundle:
    resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
    prefix:   /api/doc

修改配置檔案app/config/config.yml,使其生效:

# app/config/config.yml
nelmio_api_doc: ~

具體在程式碼中如何新增

我們平時做開發最頭疼的一個問題就是如何使得文件能夠跟開發保持同步,如果修改文件也像修改程式碼那樣頻繁,一定需要花費大量的時間和精力去維護。這就是為什麼我推薦NelmioApiDocBundle

自動文件生成工具。

所有的API介面都寫在程式碼的annotation中,非常方便。

(由此可見,我們的程式碼的註釋也不一定是完全沒有用的,這一點在其他語言裡體現的也比較多,比如java。)

ApiDoc() 註釋

這個bundle為你的每個controller提供了ApiDoc()annotation

  1. <?php
  2. namespaceYour\Namespace;
  3. useNelmio\ApiDocBundle\Annotation\ApiDoc;
  4. classYourControllerextendsController
  5. {
  6. /**
  7. * This the documentation description of your method, it will appear
  8. * on a specific pane. It will read all the text until the first
  9. * annotation.
  10. *
  11. * @ApiDoc(
  12. * resource=true,
  13. * description="This is a description of your API method",
  14. * filters={
  15. * {"name"="a-filter", "dataType"="integer"},
  16. * {"name"="another-filter", "dataType"="string", "pattern"="(foo|bar) ASC|DESC"}
  17. * }
  18. * )
  19. */
  20. publicfunction getAction()
  21. {
  22. }
  23. /**
  24. * @ApiDoc(
  25. * description="Create a new Object",
  26. * input="Your\Namespace\Form\Type\YourType",
  27. * output="Your\Namespace\Class"
  28. * )
  29. */
  30. publicfunction postAction()
  31. {
  32. }
  33. }
  34. ?>

在註釋部分,有以下幾個屬性我們可以使用:

  • section: 允許給資源分組

  • resource: 是否這個函式描述了一個主要資源,預設是否

  • description: 用來描述當前的函式

  • deprecated: 允許把當前函式設定成deprecated,預設是否

  • filters: 一個過濾陣列

  • input: the input type associated to the method (currently this supports Form Types, classes with JMS Serializer metadata, and classes with Validation component metadata) useful for POST|PUT methods, either as FQCN or as form type (if it is registered in the form factory in the container).

  • output: the output type associated with the response. Specified and parsed the same way as input.

  • statusCodes: 狀態碼,如404,500等。比如下面的程式碼,

  1. <?php
  2. classYourController
  3. {
  4. /**
  5. * @ApiDoc(
  6. * statusCodes={
  7. * 200="Returned when successful",
  8. * 403="Returned when the user is not authorized to say hello",
  9. * 404={
  10. * "Returned when the user is not found",
  11. * "Returned when somehting else is not found"
  12. * }
  13. * }
  14. * )
  15. */
  16. publicfunction myFunction()
  17. {
  18. // ...
  19. }
  20. }

這個bundle也可以通過定義的路由來獲取資訊,比如requirementspattern, 等等,所以為了最好地使用這個bundle,你應該嚴格定義每個函式的requirements等資訊。



相關推薦

NelmioApiDocBundle自動成文()

NelmioApiDocBundle NelmioApiDocBundle是一個開源的Symfony組建,能夠自動生成每個bundle以及內部每個action的document,並支援sandbox測試,可以手動變數輸入,非常方便api的開發。 如何安裝 把

php程式碼自動成文-phpDocumentor

概述 PHPDocumentor 能夠由你的程式碼自動生成文件。是一個用PHP寫的強盛的文件主動生成物件,可以直接使用命令來處理。對有範例解釋的php順序,可以快速生成具有佈局清楚、彼此參照、索引等功效的API文件。 官網:phpDocumentor GitHub上的phpDoc

Beego搭建api服務,自動成文

在網上找了一些例子,為了應用方便,自己簡單記錄一下。前提條件:配置GOPATH、GOBIN、PATH 一、檢查環境配置,很重要! Ubuntu16.04下配置(~/.bashrc)如下: export GOPATH=/home/user/go export GOBIN=$

使用Swagger自動成文

Swagger 是什麼? Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。 Springfox 的前身是 swagger-springmvc,是一個開源的 API doc 框架,可以將我們的 Controller

SwaggerUI 自動成文

swagger ui是一個API線上文件生成和測試的利器,目前發現最好用的。 為什麼好用?支援API自動生成同步的線上文件, 這些文件可用於專案內部API稽核,方便測試人員瞭解API,這些文件可作為客戶產品文件的一部分進行釋出,支援API規範生成程式碼,生成的

Objective-C 自動成文工具:appledoc

由於最近瑣事比較多,所以好久沒有寫文章了。今天我們聊一聊Objective-C自動生成文件。 做專案的人多了,就需要文件了。手工寫文件是一件苦差事,但是我們也有從原始碼中抽取註釋生成文件的專用工具。 經過查詢,比較大眾的有三個: doxygen:適於生成html文件與pdf文件

doxygen使用~~用這個註釋自動成文,炒雞方便

doxygen 使用 + C/C++註釋規範 1、安裝 yum -y install doxygen #基本安裝 yum -y install doxygen-doxywizard #圖形介面安裝 2、生成配置檔案 doxygen -g [配置檔名] #預設檔名為D

android、java製作sdk以及自動成文

最近一直在做android開發,昨天經理讓我寫個介面SDK做個介面文件,以便後面的開發。 這讓我很焦灼,SDK怎麼做?要是隻有敲程式碼還好。可是那個介面文件!!!文件這東西最討厭了,頭都大了 後來查了下資料,JDK有個自帶的Javadoc,可以根據程式碼中的註釋自動

Spring Boot如何讓Web API自動成文,並解決swagger-annotations的API註解description屬性廢棄的問題

前後端分離的系統架構中,前端開發人員需要檢視後端WEB API的文件來進行開發。採用後端API文件自動生成的方式,可以大幅提高開發效率。swagger是一個被廣泛使用的文件自動生成工具,可以與多種程式語言結合使用。我們可以利用合適的jar包,讓swqgger來協

java註釋及自動成文

單行註釋 多行註釋(這裡不再解釋) 這個就相當於空調說明書 文件註釋上面有兩個星號,生成的文件預設以Html形式儲存,可以生成說明文件 JavaDoc命令 從程式原始碼中抽取文件註釋形成一個和

Sphinx--python模組自動成文

安裝 pip install sphinx 假設現在我們有一個叫run.py的檔案,如下 # run.py def run(name): """ this is how we

JAVA成文在linux下文名亂碼

bsp ron -s style 成就 har digg window Coding TOMCAT + Java + Linux 問題描述 在JAVA中生成文件,文件名生成在windows下就正常,但是在linux下生成就亂碼。 解決方式 代碼中文件名用這樣的方式轉換 S

使用 Swagger 自動生成 ASP.NET Core Web API 的文檔、在線幫助測試文檔(ASP.NET Core Web API 自動成文檔)

地址 .cn 名稱 cor 生成文檔 def pos 構建 回車 對於開發人員來說,構建一個消費應用程序時去了解各種各樣的 API 是一個巨大的挑戰。在你的 Web API 項目中使用 Swagger 的 .NET Core 封裝 Swashbuckle 可以幫助你創建良好

php把數組、字符串 成文

字符 turn 代碼 nbsp col name style 數組 die 生成的代碼 data/ss.php <?php return array ( ‘name‘ => ‘1111‘, ‘title‘ => ‘2222‘, ); p

解決新版本webpack vue-cli成文沒有dev.server.js問題

code 新版 cnblogs 找到 routes func blog 生成 markdown 新版本webpack生成的dev.server.js 在webpack.dev.conf.js中 webpack.dev.conf.js const axios =

成文 權限 以及ftp 傳數據(一)

相關 png logs inux 分享 clas 代碼生成 www. yum 一 、PHP 代碼生成文件 報錯:沒有權限 解決 先判斷是否有這個文件 沒有新建並賦權限 二、ftp:賬號密碼 linux 登錄 檢查服務器是否安裝ftp 沒有安裝

業務類軟體的分模組調式和成文

  1.一般系統模組的簡要分析: 1.前端 前端主要是不斷提供模擬報文,提供不同標準的資料格式報文如json.xml 等,所以這裡主要是標準格式的封裝。 2.1-2 如何通訊呢?這裡是網路協議。 一般採用的是HTTP協議等,拼裝成一定的資料結構型別。 這裡假設

Python程式設計:使用pydoc成文註釋

pydoc是python自帶的一個文件生成工具,可以提取註釋 如果有三個引號的註釋方法,會優先使用三個點的註釋,其次才展示#號的註釋 示例使用的程式碼pydoc_demo.py,包含一個函式,一個類 # -*- coding: utf-8 -*- # @Date :

WebApi實現驗證授權Token,WebApi成文等(轉)

using System; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Security; namespace OtherApi.Auth { public c

真實項目中VS2015中自建T4模板成文的使用

eric 文件的 tee order ems put collect Language utili 有可能許多小夥伴們發現,vs2015和2012的自帶T4模板中的.tt文件改變非常之多,如果僅僅copyEF系統自己生成的模板文件,那可累了。以下是我自己整理的在2012和2