Недавно комиксы 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 на самом деле достаточно полная и должна быть вашим первым портом захода.