Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация REST/API (JSON) в Spring Boot / 22 сообщений из 22, страница 1 из 1
03.12.2019, 07:01
    #39897378
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
Я создал чат где могут общаться несколько людей, так вот он у меня работает. Но нужно переделать так чтобы он работал через Rest/API JSON можете помочь переделать?

Application class

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }


    @Bean
    UnicastProcessor<ChatMessage> publisher(){
        return  UnicastProcessor.create();
    }

    @Bean
    Flux<ChatMessage> messages(UnicastProcessor<ChatMessage> publisher) {
        return publisher.replay(30).autoConnect();
    }
}


ChatMessage class

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class ChatMessage {
  private String from;
  private String message;

  ChatMessage(String from, String message) {
    this.from = from;
    this.message = message;
  }

  String getFrom() {
    return from;
  }

  String getMessage() {
    return message;
  }
}


MainView class

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
@StyleSheet("frontend://styles/styles.css")
@Route
@PWA(name = "Vaadin Chat", shortName = "Vaadin Chat")
@Push
public class MainView extends VerticalLayout {

  private final UnicastProcessor<ChatMessage> publisher;
  private final Flux<ChatMessage> messages;
  private String username;


  public MainView(UnicastProcessor<ChatMessage> publisher,
                  Flux<ChatMessage> messages) {
    this.publisher = publisher;
    this.messages = messages;
    addClassName("main-view");
    setSizeFull();
    setDefaultHorizontalComponentAlignment(Alignment.CENTER);

    H1 header = new H1("Vaadin Chat");
    header.getElement().getThemeList().add("dark");

    add(header); 

    askUsername();
  }


  private void askUsername() {
    HorizontalLayout layout = new HorizontalLayout();
    TextField usernameField = new TextField();
    Button startButton = new Button("Start chat");

    layout.add(usernameField, startButton);

    startButton.addClickListener(click -> {
      username = usernameField.getValue();
      remove(layout);
      showChat();
    });

    add(layout);
  }

  private void showChat() {
    MessageList messageList = new MessageList();

    add(messageList, createInputLayout());
    expand(messageList);


    messages.subscribe(message -> {
      getUI().ifPresent(ui ->
          ui.access(() ->
              messageList.add(
                  new Paragraph(message.getFrom() + ": " +
                      message.getMessage())
              )
          ));

    });
  }

  private Component createInputLayout() {
    HorizontalLayout layout = new HorizontalLayout();
    layout.setWidth("100%");

    TextField messageField = new TextField();
    Button sendButton = new Button("Send");
    sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

    layout.add(messageField, sendButton);
    layout.expand(messageField);

    sendButton.addClickListener(click -> {
      publisher.onNext(new ChatMessage(username, messageField.getValue()));
      messageField.clear();
      messageField.focus();
    });
    messageField.focus();

    return layout;
  }

}


MessageList class

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class MessageList extends Div {

  public MessageList() {
    addClassName("message-list");
  }

  @Override
  public void add(Component... components) {
    super.add(components);

    components[components.length-1]
        .getElement()
        .callFunction("scrollIntoView");
  }
}
...
Рейтинг: 0 / 0
03.12.2019, 07:17
    #39897379
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019,
Тут подскажут если ты сам начал что то делать. Иначе в ветку работа.
...
Рейтинг: 0 / 0
03.12.2019, 07:39
    #39897380
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
...
Рейтинг: 0 / 0
03.12.2019, 07:40
    #39897381
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster,

У меня все работает, только с Рестом не дружу. Можете помочь его реализовать только с Rest/API(JSON)
...
Рейтинг: 0 / 0
03.12.2019, 07:52
    #39897382
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019,

Вон, дал гайд, берешь и делаешь так же. Что там не понятного, если там даже мне всё понятно? Делаешь класс с @RestController - это твой контроллер. Ставишь @RequestMapping на какой-нибудь метод - это твоё api, которое жрёт веб запросы. Надо больше фишек - гуглишь доку по спрингу, я больше ничего не знаю. Спрашивай свои ответы.
...
Рейтинг: 0 / 0
03.12.2019, 07:55
    #39897383
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster,

Я вот начал у вас есть телеграм, что там советы спрашивать, просто не хочу засорять форум
...
Рейтинг: 0 / 0
03.12.2019, 08:02
    #39897384
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019,

Нету. А форум для того и нужен, чтобы спрашивать всякие разные вопросы, которые потом кто-нибудь нагуглит.
...
Рейтинг: 0 / 0
04.12.2019, 06:29
    #39897917
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster,
Реализовал
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
@Service
public class RestService {
    private final RestTemplate restTemplate;
    private final MessageService messageService;

    public RestService(RestTemplateBuilder restTemplateBuilder,
                       MessageService messageService) {
        this.restTemplate = restTemplateBuilder.build();
        this.messageService = messageService;
    }

    public void saveMessage(Message message)
    {
        String url = "http://localhost:8080/api/save";

        this.restTemplate.put(url, new Gson().toJson(message));
        this.messageService.add(new Message(message.getFrom(), message.getMessage()));
    }

    public List<Message> getLast() {
        String url = "http://localhost:8080/api/last";

        String json = restTemplate.getForObject(url, String.class);
        return new Gson().fromJson(json, new TypeToken<List<Message>>(){}.getType());
    }
}
...
Рейтинг: 0 / 0
04.12.2019, 07:24
    #39897921
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019,

Молодец. Теперь влепи перед классом @RestController, перед кажым методом @RequestMapping, выкидывай нахрен все эти твои "private final RestTemplate restTemplate;", MessageService сделай @Component класс и @Autowired перед полем, где ты его объявляешь в RestService. То, что возвращает твоё API кастить ни во что не надо.
Вот эту доку прочитал? https://spring.io/guides/gs/rest-service/ ???
Какой там url для запроса? Какой параметр надо передавать в этот url? Что он ставит по дефотлу?
...
Рейтинг: 0 / 0
04.12.2019, 08:09
    #39897930
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster,

Спасибо вам за помощь) вроде бы все сделал, пока работает.

У меня только одна вещь осталась у меня сообщения отправляются только тогда, когда нажимаю левой кнопкой мыши на кнопку "отправить." Так вот как можно сделать так, чтобы еще кнопкой "Ентер" мог отправить сообщение.

Я вот нашел кусок кода
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
TextField myTextField = new TextField("A text field");
myTextField.setImmediate(true);
OnEnterKeyHandler onEnterHandler=new OnEnterKeyHandler(){
    @Override
    public void onEnterKeyPressed() {
        publisher.onNext(new Message(username, messageField.getValue()));
        messageField.clear();
        messageField.focus();
    }
};
onEnterHandler.installOn(myTextField);




Как можно его в моем MainView вставить так, чтобы левой кнопкой мыши и кнопкой ентер на клавиатуре мог отправить сообщение

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
package org.vaadin.marcus.spring;

import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.dependency.StyleSheet;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.html.Paragraph;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.page.Push;
import com.vaadin.flow.component.textfield.TextField;
import org.springframework.beans.factory.annotation.Autowired;

import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.PWA;
import org.vaadin.marcus.spring.model.Message;
import org.vaadin.marcus.spring.service.RestService;
import reactor.core.publisher.Flux;
import reactor.core.publisher.UnicastProcessor;

import java.util.List;

@StyleSheet("frontend://styles/styles.css")
@Route
@PWA(name = "Vaadin Chat", shortName = "Vaadin Chat")
@Push
public class MainView extends VerticalLayout {
  private final UnicastProcessor<Message> publisher;
  private final Flux<Message> messages;
  private String username;

  @Autowired
  private RestService restService;

  public MainView(UnicastProcessor<Message> publisher,
                  Flux<Message> messages) {
    this.publisher = publisher;
    this.messages = messages;

    addClassName("main-view");
    setSizeFull();
    setDefaultHorizontalComponentAlignment(Alignment.CENTER);

    H1 header = new H1("Vaadin Chat");
    header.getElement().getThemeList().add("dark");

    add(header); 

    askUsername();
  }

  
  private void askUsername() {
    HorizontalLayout layout = new HorizontalLayout();
    TextField usernameField = new TextField();
    Button startButton = new Button("Start chat");

    layout.add(usernameField, startButton);

    startButton.addClickListener(click -> {
      username = usernameField.getValue();
      remove(layout);
      showChat();
    });

    add(layout);
  }

  private void showChat() {
    MessageList messageList = new MessageList();

    add(messageList, createInputLayout());
    expand(messageList);

    List<Message> lasts = restService.getLast();
    for (Message message : lasts)
      messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));


    messages.subscribe(message -> {
      getUI().ifPresent(ui ->
          ui.access(() ->
              messageList.add(
                  new Paragraph(message.getFrom() + ": " +
                      message.getMessage())
              )
          ));

      restService.saveMessage(message);
    });
  }

  private Component createInputLayout() {
    HorizontalLayout layout = new HorizontalLayout();
    layout.setWidth("100%");

    TextField messageField = new TextField();
    Button sendButton = new Button("Send");
    sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

    layout.add(messageField, sendButton);
    layout.expand(messageField);

    sendButton.addClickListener(click -> {
      publisher.onNext(new Message(username, messageField.getValue()));
      messageField.clear();
      messageField.focus();
    });
    messageField.focus();

    return layout;
  }

}
...
Рейтинг: 0 / 0
04.12.2019, 09:17
    #39897941
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019

У меня только одна вещь осталась у меня сообщения отправляются только тогда, когда нажимаю левой кнопкой мыши на кнопку "отправить." Так вот как можно сделать так, чтобы еще кнопкой "Ентер" мог отправить сообщение.

Это уже не относится к теме запросов.
п.с. для сервиса лучше сделать интерфейс назвать его RestService, а этот сделать его реализацией и соответственно назвать RestServiceImpl, как обычно принято называть (и имплементить в нём интерфейс) и автоварить интерфейс, а не реализацию.
...
Рейтинг: 0 / 0
04.12.2019, 09:20
    #39897942
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
Чтобы работало по кнопке Enter ну жно листенер повесить на поле где вводится текст, проверять что он в фокусе и только тогда выполнять отправку. Конкретный код не подскажу, давно в ваадин не залазил, но суть примерно такая
...
Рейтинг: 0 / 0
04.12.2019, 09:28
    #39897945
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
Nixic,

Зачем так делают, кстати? У меня такой проект, эти .*impl просто мешаются.
...
Рейтинг: 0 / 0
04.12.2019, 11:10
    #39897988
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster,

Я вроде добавил чтобы кнопкой Ентер можно было отправить сообщение,
но он у меня ругается
Код: java
1.
2.
3.
cannot find symbol
  symbol:   method addClickShortcut(Key)
  location: variable sendButton of type Button




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
import java.util.List;

@StyleSheet("frontend://styles/styles.css")
@Route
@PWA(name = "Vaadin Chat", shortName = "Vaadin Chat")
@Push
public class MainView extends VerticalLayout {
  private final UnicastProcessor<Message> publisher;
  private final Flux<Message> messages;
  private String username;

  @Autowired
  private RestService restService;

  public MainView(UnicastProcessor<Message> publisher,
                  Flux<Message> messages) {
    this.publisher = publisher;
    this.messages = messages;

    addClassName("main-view");
    setSizeFull();
    setDefaultHorizontalComponentAlignment(Alignment.CENTER);

    H1 header = new H1("Vaadin Chat");
    header.getElement().getThemeList().add("dark");

    add(header); 

    askUsername();
  }

  
  private void askUsername() {
    HorizontalLayout layout = new HorizontalLayout();
    TextField usernameField = new TextField();
    Button startButton = new Button("Start chat");

    layout.add(usernameField, startButton);

    startButton.addClickListener(click -> {
      username = usernameField.getValue();
      remove(layout);
      showChat();
    });

    add(layout);
  }

  private void showChat() {
    MessageList messageList = new MessageList();

    add(messageList, createInputLayout());
    expand(messageList);

    List<Message> lasts = restService.getLast();
    for (Message message : lasts)
      messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));


    messages.subscribe(message -> {
      getUI().ifPresent(ui ->
          ui.access(() ->
              messageList.add(
                  new Paragraph(message.getFrom() + ": " +
                      message.getMessage())
              )
          ));

      restService.saveMessage(message);
    });
  }

  private Component createInputLayout() {
    HorizontalLayout layout = new HorizontalLayout();
    layout.setWidth("100%");

    TextField messageField = new TextField();
    Button sendButton = new Button("Send");
    sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
    sendButton.addClickShortcut(Key.ENTER).listenOn(messageField);

    layout.add(messageField, sendButton);
    layout.expand(messageField);

    sendButton.addClickListener(click -> {
      publisher.onNext(new Message(username, messageField.getValue()));
      messageField.clear();
      messageField.focus();
    });
    messageField.focus();

    return layout;
  }

}
...
Рейтинг: 0 / 0
04.12.2019, 11:21
    #39897994
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019,

Вообще без идей, что это у тебя за serverside хрень с кнопками. Зделай лучще, как модные пацаны api+single page application на реакте.
...
Рейтинг: 0 / 0
04.12.2019, 17:39
    #39898255
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster
Nixic,
Зачем так делают, кстати? У меня такой проект, эти .*impl просто мешаются.

https://www.google.com/search?q=зачем нужны интерфейсы и реализации
...
Рейтинг: 0 / 0
05.12.2019, 04:25
    #39898363
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
Nixic,

Уточняю вопрос, нахрена их делать, если реализация может быть только одна и никто это не будет что-то там приделывать с боку в принципе?
...
Рейтинг: 0 / 0
05.12.2019, 06:06
    #39898370
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster,
получилось добавить кнопку
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
@StyleSheet("frontend://styles/styles.css")
@Route
@PWA(name = "Vaadin Chat", shortName = "Vaadin Chat")
@Push
public class MainView extends VerticalLayout {
  private final UnicastProcessor<Message> publisher;
  private final Flux<Message> messages;
  private String username;

  @Autowired
  private RestService restService;

  public MainView(UnicastProcessor<Message> publisher,
                  Flux<Message> messages) {
    this.publisher = publisher;
    this.messages = messages;

    addClassName("main-view");
    setSizeFull();
    setDefaultHorizontalComponentAlignment(Alignment.CENTER);

    H1 header = new H1("Vaadin Chat");
    header.getElement().getThemeList().add("dark");

    add(header); 

    askUsername();
  }

  
  private void askUsername() {
    HorizontalLayout layout = new HorizontalLayout();
    TextField usernameField = new TextField();
    Button startButton = new Button("Start chat");

    layout.add(usernameField, startButton);

    startButton.addClickListener(click -> {
      username = usernameField.getValue();
      remove(layout);
      showChat();
    });

    add(layout);
  }

  private void showChat() {
    MessageList messageList = new MessageList();

    add(messageList, createInputLayout());
    expand(messageList);

    List<Message> lasts = restService.getLast();
    for (Message message : lasts)
      messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));

    messages.subscribe(message -> {
      getUI().ifPresent(ui ->
          ui.access(() ->
              messageList.add(
                  new Paragraph(message.getFrom() + ": " +
                      message.getMessage())
              )
          ));
    });
  }

  private Component createInputLayout() {
    HorizontalLayout layout = new HorizontalLayout();
    layout.setWidth("100%");

    TextField messageField = new TextField();
    messageField.addKeyDownListener(Key.ENTER, keyDownEvent -> sender(messageField));
    Button sendButton = new Button("Send");
    sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

    layout.add(messageField, sendButton);
    layout.expand(messageField);

    sendButton.addClickListener(click -> sender(messageField));
    messageField.focus();

    return layout;
  }
 private void sender(TextField textField) {
    Message message = new Message(username, textField.getValue());
    publisher.onNext(message);
    restService.saveMessage(message);
    textField.clear();
    textField.focus();
  }
}
...
Рейтинг: 0 / 0
05.12.2019, 08:38
    #39898392
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
crutchmaster
Nixic,
У меня такой проект, эти .*impl просто мешаются.

Дело привычки, мне проще по интерфейсам пробежаться хотя, да и некрасиво имплиментации автоварить как-то, хрен поймешь потом по названию, то ли это интерфейс, то ли сервис.
Если написано, что EmployeeService, то сразу понятно, что интерфейс и по одному клику можно или в реализацию метода провалиться или в интерфейс где все методы как на ладони.
Про плюсы интерфейсов уже даже и не говорю, видимо у тебя нет понимания пока что и опыта копания в чужом коде в больших проектах или в своём же через 2-3 месяца. А тем более ты туда еще и ваадин закинул, добавил функционала UI в проект с бэком.
Для одной кнопки и для личного проекта, конечно, можно и маппинг в контроллеры напихать и репозитории, если есть понимание, что проект не будет развиваться дальше, но в итоге это станет хреновой привычкой.
...
Рейтинг: 0 / 0
05.12.2019, 08:44
    #39898395
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019
crutchmaster,
получилось добавить кнопку

При открытии формы каждый раз будет никнейм спрашивать?
...
Рейтинг: 0 / 0
05.12.2019, 08:48
    #39898397
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
Nixic,

да
...
Рейтинг: 0 / 0
05.12.2019, 10:42
    #39898449
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация REST/API (JSON) в Spring Boot
fallen2019
Nixic,
да

Надо юзвера куда-то сохранять, в контекст и оттуда брать проверяя есть ли там кто уже.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация REST/API (JSON) в Spring Boot / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]