Я новичок в JHipster и создал свою первую конечную точку, которая дает мне сущность «приятель» подключенного пользователя:
@GetMapping("/buddies/view")
public ResponseEntity<Buddy> getConnectedBuddy() { [...] }
Это работает нормально, и я вижу в журналах, что подключенные пользователи, переходящие на эту страницу, запускают контроллер, получение выполняется успешно и дает мне пользователя:
Exit: com.mycompany.myapp.web.rest.AccountResource.getAccount() with result = UserDTO{login='haha', firstName='null', lastName='null', email='[email protected]', imageUrl='null', activated=true, langKey='en', createdBy=anonymousUser, createdDate=2020-12-10T14:27:22.264Z, lastModifiedBy='anonymousUser', lastModifiedDate=2020-12-10T14:27:22.264Z, authorities=[ROLE_USER]}
Теперь я хочу отобразить данные этого пользователя на странице, похожей на страницу http://localhost:9000/<ENTITY-NAME>/{id}/view. Я успешно создал саму страницу, продублировав buddy-details.vue и buddy-details.component.ts и внес необходимые изменения, а также добавил новую страницу в файл «entities.ts». Это все работает.
Но теперь я получаю страницу просмотра с формой сущности, хотя и без каких-либо данных. Не могли бы вы сказать мне: как я могу получить данные Backend с помощью Typescript?
Думаю, мне нужно использовать класс buddy.service.ts, но я не знаю, как это сделать.
Изменить (дополнительная информация):
В моем buddy.service.ts я создал метод get():
public get(): Promise<IBuddy> {
return new Promise<IBuddy>((resolve, reject) => {
axios
.get(`${baseApiUrl}/view`)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
}
Затем он вызывается в самостоятельно созданном файле buddy-active.component.ts:
import { Component, Vue, Inject } from 'vue-property-decorator';
import { IBuddy } from '@/shared/model/buddy.model';
import BuddyService from './buddy.service';
@Component
export default class BuddyActive extends Vue {
@Inject('buddyService') private buddyService: () => BuddyService;
public buddy: IBuddy = {};
beforeRouteEnter(to, from, next) {
next(vm => {
vm.getBuddy();
});
}
public getBuddy() {
this.buddyService()
.get()
.then(res => {
this.buddy = res;
});
}
public previousState() {
this.$router.go(-1);
}
}
Спасибо за помощь.
@GaëlMarziou Я добавил информацию в начальный пост, чтобы ее можно было прочитать!
Ну, я не знаю, что вы видите, когда вы выполняете свой код в отладчике Chrome?
В конце концов проблема оказалась довольно простой. Я сделал все, что требовалось, но импортировал неправильный скрипт в файл buddy-actice.vue. Если у вас такая же проблема, вы можете просто прочитать мой оригинальный комментарий. Однако вам придется сделать конечную точку java самостоятельно.
Спасибо, Гаэль Марзиу, за то, что указал мне правильное направление.
Вы определили BuddyService в файле buddy.service.ts для получения данных с помощью axios?