・ Diejenigen, die zum ersten Mal eine externe API verwenden ・ Spring-Boot-Anfänger
Ich schreibe unter der Annahme, dass.
Ich denke, dass jedes Unternehmen häufig Mikrodienste erstellt und diese als externe APIs bereitstellt. Wenn ich eine externe API in meinen Service einbinde, möchte ich sie für zukünftige Arbeiten verwenden, indem ich lerne, wie die Clientbibliothek verwendet wird und wie sie grundlegend verwendet wird, z. B. die Zuordnung von Daten im Json-Format zu Java-Objekten. Ich bin.
Wenn Sie auf die GitHub-Such-API klicken, wird das Repository nach Sprache durchsucht und der Repository-Name und Benutzername sowie die Übersicht über das Repository werden erfasst und angezeigt.
FW:spring-boot 2.2.5 Template Engine: Thymeleaf 3.0.4 HTTP-Client-Bibliothek: okhttp3 4.4.1 Gegenseitige Konvertierungsbibliothek von Json zu Java-Objekt: gson 2.8.6
Da Maven für das Projektmanagement verwendet wird, werden die Abhängigkeiten in pom.xml beschrieben.
pom.xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
Sie können nach Repositorys, Benutzern, Problemen und PR suchen. Es ist sehr einfach zu bedienen und erfordert keine vorherige Registrierung der Mitgliedschaft (die Anzahl der Anfragen ist jedoch begrenzt).
https://api.github.com/search/repositories?q=Suchbegriff
https://api.github.com/search/repositories?q=java
Wenn Sie versuchen, die obige URL in Ihren Browser einzugeben, werden die Suchergebnisse für das Suchwort "java" in Ihrem Browser angezeigt.
Sie können die Programmsprache auch suchen und sortieren, indem Sie sie wie folgt anpassen: "Q = Suchwort + Sprache: Ruby" (Einzelheiten finden Sie unter der obigen URL).
Konvertieren Sie danach diesen Inhalt von Json nach Java und zeigen Sie ihn in Thymeleaf an.
Gson
[Java] Konvertieren Sie JSON in Java und Java in JSON - Verwendung von GSON und Jackson-
Erstellen Sie zunächst ein POJO, um Json-Parameter wie oben beschrieben in Java zu speichern. Insbesondere habe ich die API entsprechend getippt, die im Browser angezeigten Parameter kopiert und eingefügt und ein POJO mit "jsonschema2pojo" erstellt. Sehr angenehm. .. ..
Wenn Sie jsonschema2pojo
verwenden, erhalten Sie drei Klassen: Beispiel, Gegenstand und Besitzer. Ich habe nur "Beispiel" in "ResultApi" umbenannt.
@SerializedName
Durch Hinzufügen der Annotation @SerializedName (com.google.gson.annotations.SerializedName) zum Zielmitglied können Sie den Elementnamen zum Zeitpunkt der JSON-Ausgabe in einen beliebigen Wert ändern.
@Expose
In Standard Serializable werden Felder mit Transient nicht serialisiert (nicht gespeichert). In Gson können nur Felder mit der Annotation Expose serialisiert werden.
Quelle: GSON1, [GSON2](http://www.ne.jp/asahi/hishidama/home/ tech / java / google / gson.html)
okhttp3
Ich verwies auf POST in der Java-Methode mit OkHttp3 und Methode mit HttpUrlConnection-.
Wenn wir auf einen Webserver zugreifen, greifen wir normalerweise über die HTTP-Kommunikation über einen Browser darauf zu. Der Anforderungsinhalt ist jedoch nur das Suchwort und wird im Browser angezeigt, ohne dass etwas Besonderes bekannt ist. Ich werde. Bei dieser programmgesteuerten Ausführung handelt es sich um eine Bibliothek, die Anforderungen ausgibt, Clientinformationen erstellt, HTTP-Kommunikation ausführt, Antwortergebnisse speichert usw.
DemoGetApiController.java
@Controller
public class DemoGetApiController {
@ModelAttribute
ResultApi init() {
return new ResultApi();
}
@GetMapping("/apitest")
String readme(Model model) throws IOException {
return "rest/apiTest";
}
@PostMapping("/apitest")
String search(
@RequestParam(name = "target", required = false) String target,
@RequestParam(name = "language", required = false) String language,
Model model) throws IOException {
//URL erstellen. Das Suchwort und das Optionsfeld werden während der Postkommunikation erfasst und in der URL gespeichert.
String url = "https://api.github.com/search/repositories?q=" + target + "+" + "language:" + language;
//Wir haben die für die HTTP-Kommunikation erforderlichen Informationen vorbereitet. Schließlich wird das Ergebnis im Antworttext gespeichert.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
Response response = call.execute();
ResponseBody body = response.body();
//Informationen im JSON-Format werden in POJO gespeichert, das von jsonschema2pojo erstellt wurde.
String json = body.string();
Gson gson = new Gson();
ResultApi resultApi = gson.fromJson(json, ResultApi.class);
model.addAttribute("resultApi", resultApi);
return "rest/apiTestResult";
}
}
@RequestParam (name =" target ", required = false) String target
speichert das Suchwort.
@RequestParam (name =" language ", required = false) String language
speichert die Programmiersprache des Optionsfelds.
Einzelheiten zur Verwendung von Gson und Http3 finden Sie unter der obigen URL. ResultApi / Item / Eigentümer von POJO wird weggelassen.
apiTest
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<link href="/css/style.css" th:href="@{/css/style.css}" rel="stylesheet" type="text/css"></link>
<title>Prüfung</title>
</head>
<body>
<form th:action="@{'/apitest'}" method="post">
<input type="text" name="target">
<button>Suche</button>
<p>
<label><input type="radio" name="language" value="java" checked>java</label>
<label><input type="radio" name="language" value="ruby">ruby</label>
<label><input type="radio" name="language" value="c#">c#</label>
<label><input type="radio" name="language" value="python">python</label>
<label><input type="radio" name="language" value="javascript">javascript</label>
<label><input type="radio" name="language" value="c"> c</label>
</p>
</form>
</body>
</html>
apiTestResult
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<link href="/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"
type="text/css"></link>
<title>Prüfung</title>
</head>
<body>
<a th:href="@{'/apitest'}">Rückkehr</a>
<div class="gitContents">
<div class="card card-skin" th:each="item, stat : ${resultApi.items}">
<div class="card__imgframe">
<img th:src="${item.owner.avatarUrl}">
</div>
<div class="card__textbox">
<div class="card__titletext">
<a th:href="${item.htmlUrl}"><span th:text="${item.name}"></span></a>
</div>
<div class="card__overviewtext">
<ul>
<li>USER : <span th:text="${item.owner.login}"></span></li>
<li>DESCRIPTION : <span th:text="${item.description}"></span></li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>
Dieses Mal werden der USER-Name und die Zusammenfassung des Repositorys extrahiert und angezeigt. Darüber hinaus können Sie auch die Anzahl der Sterne, die Anzahl der Gabeln usw. ermitteln. CSS weggelassen.
Ich denke, Sie haben gelernt, wie man die grundlegende externe API verwendet. Als nächstes möchte ich im Gegenteil herausfordern, eine API zu erstellen und sie im Json-Format auszugeben! !!