Bladeren bron

FEAT: get & show movie details datas

master
valere 5 maanden geleden
bovenliggende
commit
00d8af722f
3 gewijzigde bestanden met toevoegingen van 31 en 24 verwijderingen
  1. +1
    -18
      README.md
  2. +20
    -4
      pages/details/[id].vue
  3. +10
    -2
      server/api/details/[id].ts

+ 1
- 18
README.md Bestand weergeven

@@ -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 Bestand weergeven

@@ -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 Bestand weergeven

@@ -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
})

Laden…
Annuleren
Opslaan