Spring Framework WebFlux Реактивное программирование - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь отправить объект в конечную точку, но я не понимаю, почему я не могу сделать это с помощью .get (), почему нужно использовать .post ()? Что если метод конечной точки берет объект, что-то с ним делает и возвращает объект? Я могу захотеть отправить объект в конечную точку, которая принимает объект в качестве аргумента. Есть ли способ сделать это? Как передать объект клиента конечной точке getCustomer ().

WebClient.create("http://localhost:8080")
            .get()//why this can not be used? why post has to be used?
            .uri("client/getCustomer")
            .contentType(MediaType.APPLICATION_JSON)
            .bodyValue(customer)//with .get() body cannot be passed.
            .retrieve()
            .bodyToMono(Customer.class);


        @GET
        @Path("/getCustomer")
        @Produces(MediaType.APPLICATION_JSON)
        @Consumes(MediaType.APPLICATION_JSON)
        public Customer getCustomer(Customer customer) {
            //do something
            return customer;
        }

1 Ответ

1 голос
/ 12 января 2020

Отредактировано

В GET методах данные отправляются в URL. как: http://www.test.com/users/1

В POST методах, данные хранятся в теле запроса HTTP-запроса.

Поэтому мы не должны ожидать, что метод .get () будет иметь .bodyValue ().

Теперь, если вы хотите отправить данные с помощью метода GET, вы должны отправить их в URL, как показано ниже: фрагмент

   WebClient.create("http://localhost:8080")
            .get()
            .uri("client/getCustomer/{customerName}" , "testName")
            .retrieve()
            .bodyToMono(Customer.class);

Полезный пример SpringClient:

spring 5 Учебник по WebClient и WebTestClient с примерами

Дополнительная информация о POST и GET

Методы HTTP-запроса

...