Swagger for Play: Заявката за ИЗТРИВАНЕ винаги връща невалиден Json

Току-що изтеглих последната дистрибуция на Swagger-UI... и изглежда, че вече не работи при изпращане на заявка DELETE без JSON тяло, имайте предвид, че това работи добре с предишната версия. Тук по-долу са моите пояснения:

@ApiOperation(
  httpMethod = "DELETE",
  nickname = "delete",
  value = "Deletes an user",
  response = classOf[Void])
@ApiResponses(Array(
  new ApiResponse(code = 400, message = "Invalid user id"),
  new ApiResponse(code = 401, message = "Request not authorized"),
  new ApiResponse(code = 403, message = "User does not have required privileges"),
  new ApiResponse(code = 404, message = "User not found"),
  new ApiResponse(code = 412, message = "Authentication precondition failed"),
  new ApiResponse(code = 500, message = "Error processing delete user request")))
def delete(
  @ApiParam(
    name = "userId",
    value = "The id of the user to delete",
    required = true)
    @PathParam("userId")
    userId: String) = SecuredAction.async { implicit request =>
  ...
}

Всеки път, когато изпратя заявка за ИЗТРИВАНЕ, винаги получавам следния отговор (лоша заявка):

For request 'DELETE /auth/users/5392238c1e04001e04b384b4' [Invalid Json]

Отново, не съм променил изходния си код и ако се върна към предишната версия на Swagger-UI, той работи според очакванията. Изпускам ли нещо? В случай, че има заобиколно решение, за да работи?


person j3d    schedule 07.07.2014    source източник
comment
Тялото ми не съдържа никакви данни, тъй като току-що изпратих идентификатора на потребителя за изтриване в URL адреса. Защо трябва да изпращам Json данни в заявка за ИЗТРИВАНЕ? Може би не разбирам смисъла...   -  person j3d    schedule 08.07.2014


Отговори (2)


Не съм сигурен дали все още имате проблеми с това, но също имах проблем с невалиден Json при изпращане на заявка за ИЗТРИВАНЕ чрез swagger.

Поправих това в кода, като добавих ред в swagger.js. В swagger.js има метод, наречен SwaggerRequest.prototype.setHeaders. В моята версия това е около ред 1221 (може да е различен за вас, защото промених и друг код). В този метод трябва да има изявление

else if (this.type == "DELETE")
  body = "{}";

Промених това в следното

else if (this.type == "DELETE") {
  body = "{ }";
  params.body = body;
}

След това, ако направя изтриване чрез swagger, вече не получавам Invalid Json.

person Bakie    schedule 08.08.2014
comment
Да... това беше грешка и беше поправена. Просто вземете най-новата версия от GitHub. Благодаря все пак ;-) - person j3d; 08.08.2014

Това беше грешка в разпространението на потребителския интерфейс на Swagger. Последната версия го оправя.

person j3d    schedule 08.08.2014