utiliser hateoas

front
gwen 1 year ago
parent fa70b65435
commit 1114032a11

@ -9,23 +9,37 @@ export default{
//données obtenues par l'api
scientifiques: [],
page:0,
self:"",
//HATEOAS
last:null, // a prendre a partir de la requete
prev:null,
next:null,
last:null,
};
},
mounted(){
//TODO faire route pour prendre la page a partir de l'URL
this.getScientifiques(this.page)
this.self=`${REST_API}/scientifiques?page=${this.page}`
this.getScientifiques(this.self)
},
methods:{
getScientifiques(page){
getScientifiques(url){
//enlever les anciens du tableau
this.scientifiques.splice(0)
//TODO : ajouter un delai si jamais la requete est trop rapide pour VueJS
//appeler l'API
fetch(`${REST_API}/scientifiques?page=${page}`).then(response=>{
fetch(url).then(response=>{
response.json().then(json=>{
const oldLength=this.scientifiques.length
//prendre le scientifique de la requete
//prendre les scientifiques de la requete
this.scientifiques.push(...json._embedded)
//HATEOAS
this.self=json._links.self.href;
this.last=json._links.last ? json._links.last.href : null;
this.prev=json._links.prev ? json._links.prev.href : null;
this.next=json._links.next ? json._links.next.href : null;
this.last=json._links.last ? json._links.last.href : null;
})
})
}
@ -55,6 +69,8 @@ export default{
></LigneScientifique>
</tbody>
</table>
<button @click="this.getScientifiques(++this.page)">Next</button>
<!-- TODO : pagination -->
<button v-if="first" @click="this.getScientifiques(this.first)">First</button>
<button v-if="prev" @click="this.getScientifiques(this.prev)">Prev</button>
<button v-if="next" @click="this.getScientifiques(this.next)">Next</button>
<button v-if="last" @click="this.getScientifiques(this.last)">Last</button>
</template>
Loading…
Cancel
Save