rest.ts 818 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import {Plugin} from '@nuxt/types'
  2. import Hydra from '../../services/hydra'
  3. declare module '@nuxt/types' {
  4. interface Context {
  5. $rest: { [key: string]: any }
  6. }
  7. }
  8. const restPlugin: Plugin = (ctx) => {
  9. const getCollection = async (uri: string) => {
  10. const responseQuery = await ctx.$http.get(`${uri}`);
  11. return await queries(responseQuery);
  12. }
  13. const getItem = async (uri: string, id: number) => {
  14. const query = await ctx.$http.get(`${uri}/${id}`);
  15. return await queries(query);
  16. }
  17. const queries = async (responseQuery: any) => {
  18. try {
  19. let response = await responseQuery.json();
  20. return Hydra.parse(response);
  21. } catch (err) {
  22. console.log(err)
  23. }
  24. }
  25. ctx.$rest = {
  26. 'getCollection': getCollection,
  27. 'getItem': getItem
  28. }
  29. }
  30. export default restPlugin