2016-06-05 2 views
0

У меня есть очень простой способ удаления:Кураж UI показывает неправильный код статуса для ресурса JAX-RS

/** 
* Delete the question with the specified id 
* 
* @return a <code>204 NO CONTENT</code> on success or a <code>404 NOT FOUND</code> if there is no question available 
* @successResponse 204 The question was successfully deleted 
* @errorResponse 404 The question does not exist 
*/ 
@DELETE 
public Response delete(@PathParam("questionId") final Long questionId) { 
    final Question question = findByQuestionId(questionId); // throws NotFoundException 
    questionService.delete(question.getQuestionId()); 
    return Response.noContent().build(); 
} 

Как вы можете видеть, я использовал JavaDoc тег, чтобы указать коды ответов успеха и ошибок. Внутри метода я создаю отсутствие ответа на контент (который является кодом состояния 204). Это то, что развязность-доклет генерирует:

{ 
    "method" : "DELETE", 
    "nickname" : "delete", 
    "type" : "Response", 
    "parameters" : [ { 
    "type" : "integer", 
    "format" : "int64", 
    "paramType" : "path", 
    "name" : "questionId", 
    "required" : true 
    } ], 
    "summary" : "Delete the question with the specified id", 
    "responseMessages" : [ { 
    "code" : 204, 
    "message" : "The question was successfully deleted" 
    }, { 
    "code" : 404, 
    "message" : "The question does not exist" 
    } ], 
    "produces" : [ "application/json" ] 
} 

До сих пор так хорошо: Он берет мои JavaDoc тег с кодами ответов успеха и ошибок. Кроме того, существует тип «Ответ», который, как представляется, берется из инструкции return return. Теперь, когда я открываю Swagger UI, я получил следующий вид:

enter image description here

На вершине вы можете увидеть «Класс Response (Status 200)», где «Response Класс» является правильным, но «Status 200» является неправильно! Нигде в этом методе я возвращаю код состояния 200 (OK). Я не нашел никакого рабочего решения для исправления этого результата.

Что я использую:

  • Java 8
  • Maven 3.3.9
  • Dropwizard 0.9.2
  • org.apache.maven.plugins.maven-Javadoc-плагин 2.10.3
  • com.tenxerconsulting.swagger-доклет 1.1.3

Если вы хотите попробовать его, завершена e находится на GitHub: https://github.com/McPringle/moodini

Было бы здорово получить правильную документацию API Swagger API. Любая помощь приветствуется.

спасибо!

ответ

0

Кажется, что это проявляется с помощью swagger-ui автоматически.

Вы попробовали @ApiResponses с вложенным @ApiResponse?

/** 
* Delete the question with the specified id 
* 
* @return a <code>204 NO CONTENT</code> on success or a <code>404 NOT FOUND</code> if there is no question available 
*/ 
@ApiResponses(value = { 
     @ApiResponse(code = 204, message = "The question was successfully deleted"), 
     @ApiResponse(code = 404, message = "The question does not exist") 
}) 
@DELETE 
public Response delete(@PathParam("questionId") final Long questionId) { 
    final Question question = findByQuestionId(questionId); // throws NotFoundException 
    questionService.delete(question.getQuestionId()); 
    return Response.noContent().build(); 
} 

редактировать: полный доку здесь: https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X#apiresponses-apiresponse

+0

Большое спасибо вам помочь, но она не работает. Там до сих пор нет информации ответа в файле формата JSON: '{ "метод": "DELETE", "прозвище": "удалить", "типа": "Ответ", "Параметры": [{ " Тип ": "целое число", "формат": "Int64", "Paramtype": "путь", "название": "QuestionID", "требуется": истинная }], "Резюме":" Удалить этот вопрос с указанным идентификатором», „производит“: [„приложения/JSON“] }' –

+0

вы можете попробовать другой плагин: https://github.com/kongchen/swagger-maven-plugin это Gener также статичный JSON-файл во время maven-компиляции. , а также поддерживает Swagger-Spec 2.0 и имеет больше gh-звезд и т. Д. – The86Freak

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