Как изменить имя API в классе, созданном с помощью swagger-codegen

Я использую swagger-springmvc и swagger-codegen для создания клиентской библиотеки Java для веб-службы RESTful. Я написал собственное расширение BasicJavaGenerator (см. Ниже) для переопределения имен пакетов и могу успешно генерировать файлы клиентской библиотеки. Сгенерированные "основные" файлы:

swagger-codegen/generated-code/java/pom.xml
swagger-codegen/generated-code/java/src/main/java/com/example/ApiApi.java
swagger-codegen/generated-code/java/src/main/java/com/example/model/*.java

Я не могу найти, как установить имя моего API, чтобы генератор кода переименовал ApiApi.java в MyProjectApi.java (например), как, кажется, делается в примерах, включенных в swagger-codegen. Я попытался посмотреть код генератора кода, чтобы переопределить имя api, а также попытался посмотреть как на спецификацию swagger json, так и на функциональность swagger springmvc, чтобы указать возможность установки имени.

Генератор кода:

package com.wordnik.swagger.codegen

import com.wordnik.swagger.codegen.BasicJavaGenerator

object MyJavaGenerator extends BasicJavaGenerator {
  def main(args: Array[String]) = generateClient(args)

  // api invoker package
  override def invokerPackage = Some("com.example.api")

  // package for models
  override def modelPackage = Some("com.example.api.model")

  // package for api classes
  override def apiPackage = Some("com.example.api")
}

person trf    schedule 09.02.2015    source источник


Ответы (2)


вы можете переопределить это поведение как таковое:

  override def toApiName(name: String) = "MyProject" + name

как вы считаете нужным. Обратите внимание, что вам следует рассмотреть возможность обновления до 2.1.0-SNAPSHOT, который находится в https://github.com/swagger-api/swagger-codegen/tree/develop_2.0

person fehguy    schedule 09.02.2015
comment
Большое спасибо, это отлично работает! Сейчас я попробую 2.1.0-SNAPSHOT. - person trf; 10.02.2015

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

override def toApiName(name: String) = "MyProject" + name.capitalize
person Curt Sahd    schedule 10.02.2015