2014-02-10 4 views
2

Я работаю над RESTful API, используя Play Framework 2.2.1 (Java). Я использую IDEA, и я хочу добавить Swagger в свой проект.Swagger не работает с Play Framework 2

Итак, сначала я создал файл project/build.scala, потому что проект по умолчанию его не имеет. Здесь его содержание:

import sbt._ 
import Keys._ 

object ApplicationBuild extends Build { 

    val appName = "speeder" 
    val appVersion = "0.1-beta" 

    val appDependencies: Seq[sbt.ModuleID] = Seq(
    "com.wordnik" %% "swagger-play2" % "1.3-SNAPSHOT", 
    "com.wordnik" %% "swagger-play2-utils" % "1.3-SNAPSHOT" 
) 

    val main = play.Project(appName, appVersion, appDependencies).settings(
    resolvers := Seq(
     "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository", 
     "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", 
     "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases", 
     "java-net" at "http://download.java.net/maven/2", 
     "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/")) 
} 

IDEA признал его и предложил импортировать проект, что я сделал. Я аннотирование моего контроллера, как это:

@Api(value = "/accounts", description = "Operation with accounts") 
public class Accounts extends BaseController { 

    @ApiOperation(value = "Create user", notes = "This can only be done by the logged in user.", httpMethod = "POST") 
    @ApiImplicitParams(@ApiImplicitParam(name = "body", value = "Created user object", required = true, dataType = "User", paramType = "body")) 
    public static Result signup() { //... } 
} 

Я также добавил маршрут для документации API:

GET   /api-docs.json  controllers.ApiHelpController.getResources 

Тогда я побежал play dependencies из консоли и перезапустить сервер. Так что теперь я открытие http://localhost:9000/api-docs.json, и я вижу это:

{"apiVersion":"0.2","swaggerVersion":"1.2","apis":[{"path":"/accounts","description":"Operation with accounts"}]} 

Как вы можете заметить, нет никакой информации о аннотированном методе, это не только о классе. И мой IDEA не видит com.wordnik.swagger.annotations или controllers.ApiHelpController.getResources контроллер. Приложение все еще компилируется.

Так что я сделал не так?

ответ

0

Ваши настройки жесткие, если вы получаете этот JSON, в конце концов вам нужно добавить больше вещей, чтобы сообщить, как и другие методы api.

Затем перейдите на эту страницу

http://swagger.wordnik.com/

и скопировать your.server: 9000/API-docs.json, в зеленой зоне, в самом начале, а затем пойти и у вас есть хорошо документированный API, то вы можете сделать эту страницу в своем собственном приложении для игры

+0

Я уже пробовал, но у JSON нет информации о методах, поэтому я получил пустую категорию. – bvitaliyg

+1

Возможно, единственное, что вам нужно сделать - это выйти из игровой консоли, начать снова компилировать, а затем повторить попытку, это работает для меня – anquegi

0

Возможно, вам понадобится 1.3.9-SNAPSHOT. Кроме того, вы, возможно, потребуется указать

api.version="1.0" 
swagger.api.basepath="http://localhost:9000" 

в вашем application.conf

1

В качестве альтернативы вы могут использовать это lib https://github.com/iheartradio/play-swagger

Эта библиотека использует другой подход, чем аннотация (что заставляет вас изучать новый API), вы пишете спецификацию swagger непосредственно в файле маршрутов в виде комментариев. Он автоматически генерирует определение параметров на основе файла маршрутов

Смежные вопросы