Недавно комиксы Marvel выпустили REST API, который позволяет разработчикам получать доступ к персонажам комиксов и связанным с ними комиксам и историям. Я знаю, как это круто! Этот пост ознакомит вас с примером кода и покажет, как получить информацию из их API.
Вот предварительные условия, необходимые для продолжения.
- Java 1.6 и выше
- Maven 3
- Аккаунт на https://developer.marvel.com . Это должно дать вам комбинацию открытого / закрытого ключа
Во-первых, настройте файл pom.xml для maven и настройте две зависимости. Мы будем использовать resty в качестве нашего HTTP-клиента и общего кодека Apache, чтобы упростить процесс хэширования наших параметров. Создайте файл pom.xml, который выглядит следующим образом.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.codingricky</groupId>
<artifactId>marvel-rest-client</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>marvel-rest-client</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>us.monoid.web</groupId>
<artifactId>resty</artifactId>
<version>0.3.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
</dependencies>
</project>
Теперь, когда зависимости установлены, давайте создадим простой REST-клиент, который выполняет одну из служб. Реально, если вы можете взаимодействовать с одной конечной точкой, вы должны иметь возможность применять ту же технику для взаимодействия с другими.
Понимание структуры URL
Из документации , URL для получения всех символов, это http://gateway.marvel.com/v1/public/characters . Мы не можем вызвать это напрямую, нам нужно будет передать несколько дополнительных параметров для авторизации.
Наш URL должен выглядеть примерно так:
http://gateway.marvel.com/v1/public/characters?timeStamp= timeStamp & apiKey = apiKey & hash = hash
Кроме того, параметры должны быть заменены реальными значениями.
Давайте разберем дополнительные параметры, которые мы передаем.
| параметр | Стоимость |
| TIMESTAMP | временная метка (или другая длинная строка, которая может меняться в зависимости от запроса) |
| apiKey | Ваш открытый ключ |
| гашиш | Хэш md5 следующих полей объединен (timeStamp + privateKey + publicKey) |
Учитывая тот факт, что мы понимаем, как нужно формулировать запросы, давайте создадим очень простой REST-клиент, который вызывает этот сервис.
REST Client
Давайте создадим структуру каталогов src.
mkdir -p src/main/java
Теперь создайте файл с путем src / main / java / RestClient.java со следующим содержимым.
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.digest.DigestUtils;
import us.monoid.web.Resty;
public class RestClient {
public static void main(String[] args) throws IOException {
String publicKey = args[0];
String privateKey = args[1];
long timeStamp = System.currentTimeMillis();
int limit = 5;
String stringToHash = timeStamp + privateKey + publicKey;
String hash = DigestUtils.md5Hex(stringToHash);
String url = String.format("http://gateway.marvel.com/v1/public/characters?ts=%d&apikey=%s&hash=%s&limit=%d", timeStamp, publicKey, hash, limit);
String output = new Resty().text(url).toString();
System.out.println(output);
}
}
Следующие пункты должны быть сделаны о коде выше.
- Открытый ключ и закрытый ключ передаются в клиентскую программу в качестве первого и второго аргумента соответственно
- В качестве временной отметки используется только системное время, поэтому System.currentTimeMillis ()
- DigestUtils из общего кодека используется для хеширования объединенной строки
- Предел 5 установлен, чтобы ограничить количество данных, возвращающихся
- Простая текстовая строка возвращается из запроса и выводится на консоль
После всего этого вы сможете его скомпилировать и запустить.
$ mvn clean install $ java -classpath target/*.jar RestClient your-public-key your-private-key
Если это работает правильно, вы должны получить вывод, подобный следующему. Для краткости я обрезал вывод.
{"code":200,"status":"Ok","etag":"3c514a4e7","data":{"offset":0,"limit":5,"total":1402,"count":5,"results":[{"id":1009521,"name":" Hank Pym",
...
Надеемся, что этот пост продемонстрировал вам первые шаги к интеграции с Marvel REST API. Удачи в создании приложений для супергероев Marvel!
Если вам нужна дополнительная помощь, документация по Marvel на самом деле достаточно полная и должна быть вашим первым портом захода.