Как я могу отправить запрос тела, используя топор ios "js"? - PullRequest
1 голос
/ 20 апреля 2020

Я собрал Spring Rest API и протестировал его с помощью почтальона, он работает. но когда я тестирую его, используя javaScript, я не знаю, как я могу отправить requestBody?

// пружинный остаток api

@RestController
@RequestMapping("/api")
public class TmsRestController {
@CrossOrigin
    @GetMapping("/transaction")
    public List<TransactionBase> getTransaction(@RequestBody TransactionFilters filtter) {
        TMSServiceDatabaseImpl tmsService;
        try {
            tmsService = new TMSServiceDatabaseImpl();
            if (filtter != null)
                return tmsService.getTransatcions(filtter);
            else
                return tmsService.getTransatcions(new TransactionFilters(null, null, null, null, null));
        } catch (ClassNotFoundException | SQLException | IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}

// результат в почтальоне

результат в почтальоне

// javaScript код

async function getTransactions() {
  var res;
  try {
    const res = await axios("http://localhost:8080/api/transaction", {
        method: "GET",
      params:{
        "from":"202-02-01",
        "to":"2020-04-17"
      }
    });
    console.log(res);
   } catch (error) {
       alert(error);
   }
}

getTransactions();

при запуске javaScript код: GET http://localhost: 8080 / api / транзакция? От = 202-02-01 и до = 2020-04-17 400 Не найдено, я знаю, что использовать «params» неправильно, но что мне использовать?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Вы можете попробовать что-то вроде этого:

async function getTransactions() {


var res;
  try {
    const res = await axios({
        method: 'get',
        url: 'http://localhost:8080/api/transaction',
        params:qs.stringify({
        'from':'202-02-01',
        'to':'2020-04-17'
        })
       });
    console.log(res);
   } catch (error) {
       alert(error);
   }
}

getTransactions();

Я использовал qs library для строковой обработки параметров запроса. Вы должны десериализовать параметры на внутреннем сервере.

Чтобы десериализовать JSON параметры запроса, установите флажок NewtonSoft

0 голосов
/ 21 апреля 2020

Вместо этого вы можете использовать опцию 'data':

try {
    const res = await axios('http://localhost:8080/api/transaction',
        {
            method: 'GET',
            data: {
                from: "202-02-01",
                to: "2020-04-17"
            }
        }
    );
    console.log('RESPONSE DATA', res.data);
} catch (error) {
    console.error(error);
}

Кроме того, я обнаружил закрытую проблему в Ax ios Github # 2400 , и совет не использовать тело запроса при использовании GET. Кстати, это обходной путь, если вы не хотите использовать параметры URL. Надеюсь, я смогу вам помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...