Как отправить POST-запрос для тестирования API-интерфейса Rest, используя расширение ARC или ANGULAR5? - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь проверить остальные API в весенней загрузке, поэтому я использую расширение ARC для отправки запроса POST, но, думаю, я делаю это неправильно.

После аутентификации я получаю токен, который я использую для проверки остальных API.

так вот метод весенней загрузки:

 @RequestMapping(value="/saveProjectToClient",method=RequestMethod.POST)
    public boolean saveProjectToClient(@RequestBody DTO dto){
        System.out.println("Person id  : "+dto.getIdPerson());
        System.out.println("Project id : "+dto.getIdProject());

         return true;
    }

этот метод ничего не делает, но показывает идентификатор, я изменю это после того, как он заработает ..

Для расширения ARC: enter image description here

Чтобы отправить параметр в теле:

enter image description here

Как видите, я получаю сообщение об ошибке:

   {
"timestamp": 1526330389396,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "JSON parse error: Can not deserialize instance of long out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of long out of START_OBJECT token at [Source: java.io.PushbackInputStream@1134a39; line: 1, column: 1]",
"path": "/saveProjectToClient"
}

В чем проблема? я использую почтовый запрос неправильно? или метод весенней загрузки не очень хорошо написан?

EDIT

Служба Angular5 с использованием HttpClient:

addProjToClient(idPerson:number,idProject:number){
    if(this.authService.getToken()==null) {
      this.authService.loadToken();
    }

    return this.http.post(this.host+"/saveProjectToClient", {
  idPerson,
  idProject,
}, {headers:new HttpHeaders({'Authorization':this.authService.getToken()})})

  }

Проблема : Теперь, когда я пытаюсь вызвать этот метод службой angular5, я не получаю никакого результата и даже больше никаких ошибок, метод в весенней загрузке недоступен.

1 Ответ

0 голосов
/ 15 мая 2018

Проблема ясно указана в сообщении об исключении:

Can not deserialize instance of long out of START_OBJECT

Джексон не может десериализовать long, когда находит в своем запросе JSON начальный символ {.Достаточно обернуть идентификатор в модели, подобной следующей:

public class MyModel {

    private Long id; // use primitive type if, as I would think, id cannot be null

    public void setId( Long id ) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

}

Тогда вам, очевидно, придется сказать Spring, чтобы использовать пользовательскую модель в качестве @RequestBody:

@RequestMapping( value = "/saveProjectToClient", method = RequestMethod.POST )
public boolean saveProjectToClient( @RequestBody MyModel model ) {
    System.out.println( "ID: " + String.valueOf( model.getId() );
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...