浏览代码

FEAT: get & show movie details datas

master
valere 5 个月前
父节点
当前提交
00d8af722f
共有 3 个文件被更改,包括 31 次插入24 次删除
  1. +1
    -18
      README.md
  2. +20
    -4
      pages/details/[id].vue
  3. +10
    -2
      server/api/details/[id].ts

+ 1
- 18
README.md 查看文件

@@ -1,21 +1,4 @@
Test technique
Ce test a pour vocation à évaluer les compétences techniques et le savoir-faire sur la
technologie. La qualité du test sera l’aspect le plus important dans ce rendu. Toute prise
d’initiative supplémentaire sera évidemment prise en compte. En cas de doute sur certains
points de ce test, ne pas hésiter à nous contacter à it@hellocse.fr.
À l’aide de VueJS 3 vous allez devoir réaliser un interface de films de cinéma en utilisant
l’API TMDB : https://developer.themoviedb.org/reference/intro/getting-started. Vous devrez
réaliser 3 pages :
- Liste des films
- Ajouter un défilement infini
- Ajouter un filtre de recherche sur le nom du film
(https://developer.themoviedb.org/reference/search-movie)
- Lorsque l’on clique sur un film, on souhaite voir le détail des informations de
ce film.
- Détail d’un film avec les informations relatives à ce film
(https://developer.themoviedb.org/reference/movie-details)
- Les données du film à afficher sur cette pages sont :
- L’affiche, le titre, le synopsis, le réalisateur, les stars / têtes d’affiche,
les stars / têtes d’affiche,
les catégories, la note TMDB et le nombre de personnes ayant noté le
film.
- En dessous des informations du film, on souhaite pouvoir laisser des


+ 20
- 4
pages/details/[id].vue 查看文件

@@ -1,12 +1,24 @@
<template>
<section>
<img :src="config.public.IMG_BASE_URL + film.poster_path" :alt="film.title">
<span class="flex flex-row">
<span class="">
{{ film.title }}
{{ film.original_title }}
{{ film.overview }}
{{ director }}
<ul>
<li v-for="star in film.credits.cast">
{{ star.name }}
</li>
</ul>
<ul>
<li v-for="genre in film.genres">
{{ genre.name }}
</li>
</ul>
<!-- {{ film.vote_count }} -->
<!-- {{ film.release_date }} -->
{{ film.vote_average }}
{{ film.vote_count }}
{{ film.release_date }}
{{ film.id }}
</span>
</section>
</template>
@@ -16,10 +28,14 @@ const config = useRuntimeConfig()
const film = ref()
const route = useRoute()
const filmId = ref('')
const director = ref('')

filmId.value = route.params.id

if (filmId.value !== '') {
const { data } = await useFetch(`/api/details/${filmId.value}`)
film.value = data.value
director.value = film.value.credits.crew.filter((member) => member.job === 'Director')
director.value = director.value[0].name
}
</script>

+ 10
- 2
server/api/details/[id].ts 查看文件

@@ -2,12 +2,20 @@ import fetch from 'node-fetch'

export default eventHandler(async (req) => {
const id = req.context.params?.id || ''
const url = `https://api.themoviedb.org/3/movie/${id}`
const url = `https://api.themoviedb.org/3/movie/${id}?language=fr-FR`
const url_credits = `https://api.themoviedb.org/3/movie/${id}/credits?language=fr-FR`
const config = useRuntimeConfig(req)

const response = await fetch(url, {
method: 'get',
headers: { 'Content-Type': 'application/json', 'Authorization': config.API_BEARER }
})
return await response.json()
const response_credits = await fetch(url_credits, {
method: 'get',
headers: { 'Content-Type': 'application/json', 'Authorization': config.API_BEARER }
})

let details = await response.json()
details.credits = await response_credits.json()
return details
})

正在加载...
取消
保存