1votos

Acceder a la API Marvel en JavaScript

por josejuan hace 4 años

En 11 líneas de javascript se da acceso a todas las entradas de la API, además, actualiza automáticamente cambios en la API (nuevos métodos, eliminación de métodos, cambio en los métodos, nuevos argumentos, eliminación de argumentos, cambio en los argumentos, etc...).

Crea un enlace (wrapper, api, ...) para acceder fácilmente a la API de datos de comics de Marvel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Captura *TODA* la API de Marvel 
function Marvel(url, prefix, suffix) { 
  var addF = (n, f) => this[n] = f; 
  jGet(url).apis.forEach(a => { 
    var ts = a.path.substring(11).split('/'); 
    addF( 
      ts.map(q => q[0] != '{' ? q : '_').map(q => q[0].toUpperCase() + q.substring(1)).join(''), 
      new Function( ts.filter(q => q[0] == '{').map(q => q.replace(/[{}]/g,'')).join('') 
                    , "return jGet('" + prefix + a.path.replace(/{([^}]+)}/g, r => "' + " + r.replace(/[{}]/g,'') + " + '") + suffix + "')") 
    ); 
  }); 
 
 
 
 
// auxiliar 
function jGet(url) { return JSON.parse($.ajax({type: "GET", url: url, async: false}).responseText) } 
 
 
 
 
// Por ejemplo: 
var m = new Marvel( 
  'http://gateway.marvel.com/docs/public?apikey=b588b4fa7612c91d051f249748bb1806', 
  'http://gateway.marvel.com', 
  '?apikey=b588b4fa7612c91d051f249748bb1806'); 
 
var allChars = m.Characters().data.results; 
console.log(allChars[0].name); 
 
var oneChar = m.Characters_(1010354).data.results[0]; 
console.log(oneChar.name); 
 
var oneComicAllCharacters = m.Comics_Characters(17271).data.results; 
oneComicAllCharacters.forEach(c => console.log(c.name)); 
 
/* Salida 
 
 
 
GET http://gateway.marvel.com/docs/public?apikey=b588b4fa7612c91d051f249748bb1806 200 OK 421ms     
GET http://gateway.marvel.com/v1/public/characters?apikey=b588b4fa7612c91d051f249748bb1806 304 Not Modified 250ms     
3-D Man 
GET http://gateway.marvel.com/v1/public/characters/1010354?apikey=b588b4fa7612c91d051f249748bb1806 304 Not Modified 281ms     
Adam Warlock 
GET http://gateway.marvel.com/v1/public/comics/17271/characters?apikey=b588b4fa7612c91d051f249748bb1806 304 Not Modified 357ms     
Adam Warlock 
Blastaar 
High Evolutionary 
Moondragon 
Quasar (Phyla-Vell) 
Ronan the Accuser 
Star-Lord (Peter Quill) 
Super-Skrull 
Ultron 
Wraith 
 
 
*/ 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.