{"id":332,"date":"2024-04-08T00:41:18","date_gmt":"2024-04-07T23:41:18","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=332"},"modified":"2024-05-25T00:42:10","modified_gmt":"2024-05-24T23:42:10","slug":"nutzung-von-openapi-in-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=332","title":{"rendered":"Nutzung von OpenAPI in Java"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Einf\u00fchrung<\/h3>\n\n\n\n<p>OpenAPI, fr\u00fcher bekannt als Swagger, ist eine weit verbreitete Spezifikation zur Beschreibung von RESTful APIs. Es erm\u00f6glicht Entwicklern, die Struktur ihrer APIs in einem standardisierten Format zu definieren, was die Interoperabilit\u00e4t zwischen verschiedenen Systemen und Technologien erleichtert. In der Java-Entwicklung spielt OpenAPI eine wichtige Rolle bei der Dokumentation, Generierung und Validierung von API-Schnittstellen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist OpenAPI?<\/h3>\n\n\n\n<p>OpenAPI ist eine Spezifikation f\u00fcr maschinenlesbare Schnittstellen von Webservices. Es beschreibt die verf\u00fcgbaren Endpunkte, deren Parameter, R\u00fcckgabewerte und andere Aspekte einer API. Das Format ist JSON- oder YAML-basiert, was es sowohl menschen- als auch maschinenlesbar macht. Mit der OpenAPI-Spezifikation kann ein breites Spektrum an Werkzeugen genutzt werden, um Dokumentation zu generieren, Code zu erzeugen oder Tests durchzuf\u00fchren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OpenAPI in der Java-Entwicklung<\/h3>\n\n\n\n<p>In der Java-Entwicklung gibt es verschiedene Bibliotheken und Frameworks, die die Integration von OpenAPI unterst\u00fctzen. Diese Tools vereinfachen die Erstellung, Wartung und Nutzung von APIs erheblich. Zu den bekanntesten geh\u00f6ren Swagger, Springfox, und OpenAPI Generator.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Swagger und Springfox<\/h4>\n\n\n\n<p>Swagger ist das bekannteste Toolset zur Nutzung der OpenAPI-Spezifikation. Es bietet eine Reihe von Tools, darunter Swagger Editor, Swagger UI und Swagger Codegen. Springfox ist eine Bibliothek, die die Integration von Swagger in Spring Boot-Anwendungen erleichtert.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Einrichtung von Springfox in einem Spring Boot-Projekt<\/h5>\n\n\n\n<p>Um Springfox in ein Spring Boot-Projekt zu integrieren, m\u00fcssen einige Abh\u00e4ngigkeiten in der <code>pom.xml<\/code>-Datei hinzugef\u00fcgt werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>io.springfox<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>springfox-boot-starter<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.0.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Nach dem Hinzuf\u00fcgen der Abh\u00e4ngigkeiten kann die Konfiguration der API-Dokumentation beginnen. Dies geschieht durch die Erstellung einer Konfigurationsklasse:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.context<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.Bean<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.context<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.Configuration<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.builders<\/span><span class=\"hljs-selector-class\">.RequestHandlerSelectors<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.spi<\/span><span class=\"hljs-selector-class\">.DocumentationType<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.spring<\/span><span class=\"hljs-selector-class\">.web<\/span><span class=\"hljs-selector-class\">.plugins<\/span><span class=\"hljs-selector-class\">.Docket<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.swagger2<\/span><span class=\"hljs-selector-class\">.annotations<\/span><span class=\"hljs-selector-class\">.EnableSwagger2<\/span>;\n\n<span class=\"hljs-keyword\">@Configuration<\/span>\n@EnableSwagger2\npublic class SwaggerConfig {\n\n    <span class=\"hljs-keyword\">@Bean<\/span>\n    public Docket api() {\n        <span class=\"hljs-selector-tag\">return<\/span> <span class=\"hljs-selector-tag\">new<\/span> <span class=\"hljs-selector-tag\">Docket<\/span>(<span class=\"hljs-selector-tag\">DocumentationType<\/span><span class=\"hljs-selector-class\">.SWAGGER_2<\/span>)\n                <span class=\"hljs-selector-class\">.select<\/span>()\n                <span class=\"hljs-selector-class\">.apis<\/span>(<span class=\"hljs-selector-tag\">RequestHandlerSelectors<\/span><span class=\"hljs-selector-class\">.basePackage<\/span>(\"<span class=\"hljs-selector-tag\">com<\/span><span class=\"hljs-selector-class\">.example<\/span><span class=\"hljs-selector-class\">.api<\/span>\"))\n                <span class=\"hljs-selector-class\">.build<\/span>();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese Konfiguration scannt alle Controller im Paket <code>com.example.api<\/code> und generiert automatisch die OpenAPI-Dokumentation. Die generierte Dokumentation kann dann unter <code>http:\/\/localhost:8080\/swagger-ui\/<\/code> aufgerufen werden.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">OpenAPI Generator<\/h4>\n\n\n\n<p>Der OpenAPI Generator ist ein weiteres m\u00e4chtiges Werkzeug, das aus einer OpenAPI-Spezifikation Client- und Servercode f\u00fcr verschiedene Programmiersprachen generieren kann, einschlie\u00dflich Java. Es bietet zahlreiche Generatoren f\u00fcr unterschiedliche Frameworks wie Spring, JAX-RS und viele mehr.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Verwendung des OpenAPI Generators<\/h5>\n\n\n\n<p>Um den OpenAPI Generator zu nutzen, muss die OpenAPI-Spezifikation in einer JSON- oder YAML-Datei vorliegen. Angenommen, wir haben eine <code>openapi.yaml<\/code>-Datei, die unsere API beschreibt. Mit dem folgenden Befehl kann ein Spring Boot-Projekt generiert werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">openapi-generator-cli generate -i openapi.yaml -g spring -o .\/generated-spring-server<\/code><\/span><\/pre>\n\n\n<p>Dieser Befehl verwendet den OpenAPI Generator CLI, um den Servercode basierend auf der OpenAPI-Spezifikation zu erzeugen. Der <code>-i<\/code> Parameter gibt die Eingabedatei an, <code>-g<\/code> spezifiziert den gew\u00fcnschten Generator (in diesem Fall <code>spring<\/code>), und <code>-o<\/code> gibt das Ausgabeverzeichnis an.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Praktische Anwendung<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Dokumentation<\/h4>\n\n\n\n<p>Eine der Hauptanwendungen von OpenAPI ist die Dokumentation von APIs. Durch die Nutzung von Swagger UI oder anderen Tools k\u00f6nnen Entwickler und Anwender eine interaktive Dokumentation erstellen, die es erm\u00f6glicht, Endpunkte direkt auszuprobieren.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Codegenerierung<\/h4>\n\n\n\n<p>Ein weiteres n\u00fctzliches Feature ist die Codegenerierung. Mit Tools wie OpenAPI Generator k\u00f6nnen Entwickler sowohl Server- als auch Clientcode aus einer einzigen Spezifikation generieren. Dies spart Zeit und reduziert das Risiko von Inkonsistenzen zwischen verschiedenen Implementierungen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Validierung<\/h4>\n\n\n\n<p>OpenAPI kann auch zur Validierung von API-Anfragen und -Antworten verwendet werden. Frameworks wie Spring bieten Middleware an, die eingehende Anfragen gegen die OpenAPI-Spezifikation validiert und sicherstellt, dass sie den definierten Anforderungen entsprechen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel: Erstellung einer RESTful API mit OpenAPI und Spring Boot<\/h3>\n\n\n\n<p>Im Folgenden wird ein vollst\u00e4ndiges Beispiel gezeigt, wie eine RESTful API mit OpenAPI und Spring Boot erstellt wird.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Schritt 1: Projekt einrichten<\/h4>\n\n\n\n<p>Erstellen Sie ein neues Spring Boot-Projekt mit den folgenden Abh\u00e4ngigkeiten in der <code>pom.xml<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-web<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>io.springfox<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>springfox-boot-starter<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.0.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Schritt 2: API-Controller erstellen<\/h4>\n\n\n\n<p>Erstellen Sie einen einfachen Controller, um eine RESTful API zu definieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.web<\/span><span class=\"hljs-selector-class\">.bind<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.GetMapping<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.web<\/span><span class=\"hljs-selector-class\">.bind<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.RequestMapping<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.web<\/span><span class=\"hljs-selector-class\">.bind<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.RestController<\/span>;\n\n<span class=\"hljs-keyword\">@RestController<\/span>\n@RequestMapping(<span class=\"hljs-string\">\"\/api\"<\/span>)\npublic class HelloWorldController {\n\n    <span class=\"hljs-keyword\">@GetMapping<\/span>(\"\/hello\")\n    public String sayHello() {\n        <span class=\"hljs-selector-tag\">return<\/span> \"<span class=\"hljs-selector-tag\">Hello<\/span>, <span class=\"hljs-selector-tag\">World<\/span>!\";\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Schritt 3: Swagger-Konfiguration hinzuf\u00fcgen<\/h4>\n\n\n\n<p>F\u00fcgen Sie die Swagger-Konfigurationsklasse hinzu, um die Dokumentation zu aktivieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.context<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.Bean<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.context<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.Configuration<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.builders<\/span><span class=\"hljs-selector-class\">.RequestHandlerSelectors<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.spi<\/span><span class=\"hljs-selector-class\">.DocumentationType<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">springfox<\/span><span class=\"hljs-selector-class\">.documentation<\/span><span class=\"hljs-selector-class\">.spring<\/span><span class=\"hljs-selector-class\">.web<\/span><span class=\"hljs-selector-class\">.plugins<\/span><span class=\"hljs-selector-class\">.Docket<\/span>;\n\n<span class=\"hljs-keyword\">@Configuration<\/span>\npublic class SwaggerConfig {\n\n    <span class=\"hljs-keyword\">@Bean<\/span>\n    public Docket api() {\n        <span class=\"hljs-selector-tag\">return<\/span> <span class=\"hljs-selector-tag\">new<\/span> <span class=\"hljs-selector-tag\">Docket<\/span>(<span class=\"hljs-selector-tag\">DocumentationType<\/span><span class=\"hljs-selector-class\">.SWAGGER_2<\/span>)\n                <span class=\"hljs-selector-class\">.select<\/span>()\n                <span class=\"hljs-selector-class\">.apis<\/span>(<span class=\"hljs-selector-tag\">RequestHandlerSelectors<\/span><span class=\"hljs-selector-class\">.basePackage<\/span>(\"<span class=\"hljs-selector-tag\">com<\/span><span class=\"hljs-selector-class\">.example<\/span><span class=\"hljs-selector-class\">.api<\/span>\"))\n                <span class=\"hljs-selector-class\">.build<\/span>();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Schritt 4: OpenAPI-Dokumentation generieren<\/h4>\n\n\n\n<p>Starten Sie die Anwendung und rufen Sie die Swagger-UI unter <code>http:\/\/localhost:8080\/swagger-ui\/<\/code> auf, um die generierte Dokumentation zu sehen. Sie k\u00f6nnen die API-Endpunkte ausprobieren und die Dokumentation automatisch aktualisieren lassen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>OpenAPI bietet eine leistungsstarke M\u00f6glichkeit, RESTful APIs zu dokumentieren, zu validieren und zu generieren. In der Java-Entwicklung vereinfachen Tools wie Swagger und OpenAPI Generator die Arbeit erheblich, indem sie den Entwicklungsprozess standardisieren und automatisieren. Die Verwendung von OpenAPI tr\u00e4gt zur Verbesserung der Codequalit\u00e4t und der Zusammenarbeit zwischen Teams bei, indem sie klare und einheitliche API-Spezifikationen bereitstellt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einf\u00fchrung OpenAPI, fr\u00fcher bekannt als Swagger, ist eine weit verbreitete Spezifikation zur Beschreibung von RESTful APIs. Es erm\u00f6glicht Entwicklern, die Struktur ihrer APIs in einem standardisierten Format zu definieren, was die Interoperabilit\u00e4t zwischen verschiedenen Systemen und Technologien erleichtert. In der Java-Entwicklung spielt OpenAPI eine wichtige Rolle bei der Dokumentation, Generierung und Validierung von API-Schnittstellen. Was [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5],"tags":[],"class_list":["post-332","post","type-post","status-publish","format-standard","hentry","category-plain_java","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=332"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/332\/revisions"}],"predecessor-version":[{"id":333,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/332\/revisions\/333"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}