프로젝트
45. 스카우트 목록 1개 조회
uni5948
2022. 2. 4. 20:26
45. 스카우트 목록 1개 조회
스카우트 된 선수의 계약, 목록에서 삭제를 위해 해당 페이지를 생성한다.
- 백엔드 스카우트 목록 1개 조회 추가
23. 스카우터 목록 삭제 때 생성한 스카우트 목록 1개 조회 사용
1. ScoutService
// 스카우터 목록 1개 조회
public Scout getScoutOne(Long no);
2. ScoutServiceImpl
// 스카우터 목록 1개 조회
@Override
public Scout getScoutOne(Long no) {
Optional<Scout> scout = sRepository.findById(no);
return scout.orElse(null);
}
3. 스카우트 목록 1개 조회(ScoutController)
//스카우터 목록 1개 조회
// 127.0.0.1:8080/REST/scoutone?sno=
@RequestMapping(value = "/scoutone", method = {RequestMethod.GET},
consumes = MediaType.ALL_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, Object> scoutoneGET(Scout scout,
@RequestParam(name = "sno", defaultValue = "0")long scoutNo,
@RequestHeader("token") String token) {
Map<String, Object> map = new HashMap<>();
try{
String memberid = jwtUtil.extractUsername(token); // 토큰을 통해 회원 정보 찾기
Member member = mService.selectUserOne(memberid); // member 정보 찾기
if(memberid.equals(member.getUserid())){
Scout scout2 = sService.getScoutOne(scoutNo);
map.put("status", 200);
map.put("scout",scout2);
}
}
catch(Exception e){
e.printStackTrace();
map.put("status", e.hashCode());
}
return map;
}
4. 조회하기
- 스카우트 목록 1개 조회 페이지 라우터 추가
1. 스카우트 목록 1개 조회 파일 생성
2. 라우터 추가(index.js)
스카우터 목록 1개 조회는 스카우터 목록에서 이동하므로 nav 바에 추가하지 않는다.
import { createWebHistory, createRouter } from "vue-router";
import Home from '@/components/Home'
import Join from '@/components/Join'
import Login from '@/components/Login'
import Logout from '@/components/Logout'
import Registration from '@/components/Registration'
import PlayerList from '@/components/PlayerList'
import Player_One from '@/components/Player_One'
import ScoutList from '@/components/ScoutList'
import Scout_One from '@/components/Scout_One'
const routes = [
{path:'/', name:'Home', component:Home},
{path:'/Join', name:'Join', component:Join},
{path:'/Login', name:'Login', component:Login},
{path:'/Logout', name:'Logout', component:Logout},
{path:'/Registration', name:'Registration', component:Registration},
{path:'/PlayerList', name:'PlayerList', component:PlayerList},
{path:'/Player_One', name:'Player_One', component:Player_One},
{path:'/ScoutList', name:'ScoutList', component:ScoutList},
{path:'/Scout_One', name:'Scout_One', component:Scout_One},
]
const router = createRouter({
history: createWebHistory(),
routes,
});
export default router;
3. 스카우트 목록 1개 조회 이동
스카우트 전체 목록에서 스카우트 번호를 클릭하여 1개 조회를 한다.
<td><a href="#" @click="handleScout(scoutlist.scoutno)">{{scoutlist.scoutno}}</a></td>
... ...
async handleScout(scoutno){
this.$router.push({name: 'Scout_One', query:{sno:scoutno}});
}
- 스카우트 목록 1개 조회하기
1. 백엔드 연동, console 값 확인
<script>
import axios from 'axios';
export default {
async created(){
const url = `/REST/scoutone?sno=${this.sno}`;
const headers = {"Content-Type":"application/json",
token : this.token};
const response = await axios.get(url,{headers});
// console.log(response);
this.scout = response.data.scout;
this.playername = response.data.scout.player.playername;
this.playerage = response.data.scout.player.playerage;
this.playerprice = response.data.scout.player.playerprice;
},
data(){
return{
//세션 스토리지에서 토큰 읽기
token : sessionStorage.getItem("TOKEN"),
sno : this.$route.query.sno,
scout : ''
}
}
}
</script>
<style scoped>
</style>
2. 페이지 구성
스카우트 번호와 선수 이름, 나이, 몸 값만 출력한다.
<template>
<div>
{{sno}} <br />
스카우트 번호 {{scout.scoutno}} <br />
선수 이름 {{playername}} <br />
선수 나이 {{playerage}} <br />
선수 몸 값 {{playerprice}} <br />
</div>
</template>
3. 화면 확인