Как читать и хранить вызовы / ответы API в Java - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь создать программу на Java, которая позволит пользователям записывать и хранить вызовы и ответы API в базе данных NoSQL.По сути, я хочу взять имя звонка, параметры и ответ и сохранить его в базе данных.Цель состоит в том, чтобы позволить пользователям повторно использовать вызовы с одинаковыми параметрами, получая доступ к данным из базы данных, в отличие от выполнения прямого вызова API.Есть ли способ прослушивания вызовов API для конкретного URL-адреса с использованием Java, и если да, то как это можно сделать?

1 Ответ

0 голосов
/ 09 июля 2019

Я не уверен, полностью ли я понимаю причину этого.Но ответ на этот вопрос тесно зависит от технологии, которую вы хотите использовать для HTTP-клиента, типа запроса / ответа и базы данных и стратегии NoSQL, которую вы хотите использовать.В качестве предложения вы можете создать два класса данных, RequestDummy и ResponseDummy со всеми необходимыми полями, которые вам нужны, и использовать что-то вроде gson для их сериализации или десериализации и сохранения их в виде файла JSON с базой данных.быть более читабельным.Пример:

class RequestDummy {
    String url;
    String method;    // (GET|HEAD|POST|PUT|PATCH|DELETE)
    Map<String, String> headers;
    String payload;   // For (POST|PUT|PATCH) use Base64 to encode the binary to String
}

class ResponseDummy {
    Map<String, String> headers;
    int statusCode;
    String body;   // use Base64 to encode the binary to String
}

И использовать их во время HTTP-вызова (кратко, чтобы просто объяснить идею):

// Initialize RequestDummy
RequestDummy req ...

HttpURLConnection con = (HttpURLConnection) new URL(req.url).openConnection();

// optional default is GET
con.setRequestMethod(req.method);
req.headers.entrySet().forEach(e -> con.setRequestProperty(e.getKey(), e.getValue()));

int responseCode = con.getResponseCode();

BufferedReader in = new BufferedReader(new InputStreamReader());
byte[] data = con.getInputStream().readAllBytes() // Java9

// Initialize ResponseDummy
RequestDummy req ...

in.close();

В 99% хранение запросов и ответов - плохой дизайн.В качестве рекомендации не рекомендуется хранить HTTP-запрос и ответ для любого использования.Они предназначены только для связи, вы должны хранить запрошенные данные, на основе которых построен HTTP-запрос, и сгенерированные данные из ответа HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...