{"id":145,"date":"2024-01-05T22:36:00","date_gmt":"2024-01-05T21:36:00","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=145"},"modified":"2024-01-09T21:21:04","modified_gmt":"2024-01-09T20:21:04","slug":"145","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=145","title":{"rendered":"Konfigurationsverwaltung in Spring Boot mit @ConfigurationProperties"},"content":{"rendered":"\n<p>Spring Boot ist ein Framework, das die Entwicklung von Java-Anwendungen erleichtert. Eine wichtige Komponente in jeder Anwendung ist die Verwaltung von Konfigurationsdaten. Diese Daten k\u00f6nnen Parameter wie Datenbankverbindungen, API-Endpunkte, Schwellenwerte und viele andere Einstellungen sein. In diesem Artikel werden wir untersuchen, wie Sie mit der <code>@ConfigurationProperties<\/code>-Annotation Konfigurationsdaten in Ihre Spring Boot-Anwendung einlesen und darauf zugreifen k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die @ConfigurationProperties-Annotation<\/h2>\n\n\n\n<p>Die <code>@ConfigurationProperties<\/code>-Annotation ist ein Schl\u00fcsselkonzept in Spring Boot, um Konfigurationsdaten in einer strukturierten Weise zu verwalten. Sie erm\u00f6glicht es Ihnen, Konfigurationsdaten aus verschiedenen Quellen wie <code>application.properties<\/code>, <code>application.yml<\/code>, Umgebungsvariablen und benutzerdefinierten Quellen zu laden und diese Daten in POJOs (Plain Old Java Objects) zu binden. Dies erleichtert die Verwendung und Aktualisierung von Konfigurationsdaten in Ihrer Anwendung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt-f\u00fcr-Schritt-Anleitung<\/h2>\n\n\n\n<p>Lassen Sie uns nun Schritt f\u00fcr Schritt durchgehen, wie Sie <code>@ConfigurationProperties<\/code> in Ihrer Spring Boot-Anwendung verwenden k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 1: Abh\u00e4ngigkeiten hinzuf\u00fcgen<\/h3>\n\n\n\n<p>Zuerst m\u00fcssen Sie sicherstellen, dass Sie die richtigen Abh\u00e4ngigkeiten in Ihrer <code>build.gradle<\/code> oder <code>pom.xml<\/code> Datei haben, um die Verwendung von Spring Boot und <code>@ConfigurationProperties<\/code> zu erm\u00f6glichen. In den meisten F\u00e4llen sind diese Abh\u00e4ngigkeiten bereits in einem Spring Boot-Projekt vorhanden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 2: Konfigurationsklasse erstellen<\/h3>\n\n\n\n<p>Erstellen Sie eine Java-Klasse, die als Konfigurationsklasse dient und die <code>@Configuration<\/code>-Annotation enth\u00e4lt (dadurch wird sie von Spring direkt als Bean instanziert &#8211; diese Annotation ist, auch wenn der Name es suggerieren mag, nicht zwingend n\u00f6tig, um Konfigurationsdaten \u00fcber die <code>@ConfigurationProperties<\/code>-Annotation einzulesen; das geht auch mit jeder anderen Spring Bean Klasse). In dieser Klasse werden die Konfigurationsdaten und deren Struktur definiert.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.springframework.boot.context.properties.ConfigurationProperties;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.context.annotation.Configuration;\n\n@Configuration\n@ConfigurationProperties(prefix = <span class=\"hljs-string\">\"meineanwendung\"<\/span>)\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AnwendungsEinstellungen<\/span> <\/span>{\n    private <span class=\"hljs-built_in\">String<\/span> name;\n    private int port;\n    private List&lt;<span class=\"hljs-built_in\">String<\/span>&gt; serverList;\n    private <span class=\"hljs-built_in\">Map<\/span>&lt;<span class=\"hljs-built_in\">String<\/span>, <span class=\"hljs-built_in\">String<\/span>&gt; zusatzInformationen;\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter f\u00fcr die oben definierten Felder<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel erstellen wir eine Klasse namens <code>AnwendungsEinstellungen<\/code>, die Konfigurationsdaten f\u00fcr unsere Anwendung enth\u00e4lt. Die <code>@ConfigurationProperties<\/code>-Annotation wird mit dem <code>prefix<\/code>-Parameter verwendet, um die Konfigurationsdaten zu gruppieren. Hier verwenden wir das Prefix &#8222;meineanwendung&#8220;, und daher werden alle Konfigurationsdaten, die mit diesem Prefix beginnen, in diese Klasse gebunden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 3: Konfigurationsdatei erstellen<\/h3>\n\n\n\n<p>Erstellen Sie eine Konfigurationsdatei (normalerweise <code>application.properties<\/code> oder <code>application.yml<\/code>), in der Sie die Konfigurationsdaten definieren. Beachten Sie, dass das Prefix im Namen der Eigenschaften in der Datei entsprechen muss.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">application.properties:<\/h4>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">meineanwendung.name=Meine Spring Boot Anwendung\nmeineanwendung.port=8080\nmeineanwendung.serverList=Server1,Server2,Server3\nmeineanwendung.zusatzInformationen.key1=Wert 1\nmeineanwendung.zusatzInformationen.key2=Wert 2<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\">application.yml:<\/h4>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">meineanwendung:\n  name: Meine Spring Boot Anwendung\n  port: 8080\n  serverList:\n    - Server1\n    - Server2\n    - Server3\n  zusatzInformationen:\n    key1: Wert 1\n    key2: Wert 2<\/code><\/span><\/pre>\n\n\n<p>In der Konfigurationsdatei sind die Eigenschaften genau wie in der <code>AnwendungsEinstellungen<\/code>-Klasse strukturiert und mit dem entsprechenden Prefix versehen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 4: Anwendungsklasse konfigurieren<\/h3>\n\n\n\n<p>In Ihrer Hauptanwendungsklasse m\u00fcssen Sie die Konfigurationsklasse registrieren, indem Sie die <code>@EnableConfigurationProperties<\/code>-Annotation verwenden. Dies erm\u00f6glicht es Spring Boot, die Konfigurationsdaten aus der Datei in die <code>AnwendungsEinstellungen<\/code>-Klasse zu binden.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.springframework.boot.SpringApplication;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.autoconfigure.SpringBootApplication;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.context.properties.EnableConfigurationProperties;\n\n@SpringBootApplication\n@EnableConfigurationProperties(AnwendungsEinstellungen.class)\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeinAnwendungsStarter<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        SpringApplication.run(MeinAnwendungsStarter.class, args);\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\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Schritt 5: Konfigurationsdaten verwenden<\/h3>\n\n\n\n<p>Nun k\u00f6nnen Sie die Konfigurationsdaten in Ihren Spring Beans verwenden, indem Sie einfach eine Instanz der <code>AnwendungsEinstellungen<\/code>-Klasse injizieren. Spring Boot wird automatisch die Daten aus der Konfigurationsdatei laden und in diese Instanz binden.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">import org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Component;\n\n@Component\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeinService<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> AnwendungsEinstellungen einstellungen;\n\n    @Autowired\n    <span class=\"hljs-keyword\">public<\/span> MeinService(AnwendungsEinstellungen einstellungen) {\n        this.einstellungen = einstellungen;\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> void zeigeKonfiguration() {\n        System.out.println(<span class=\"hljs-string\">\"Anwendungsname: \"<\/span> + einstellungen.getName());\n        System.out.println(<span class=\"hljs-string\">\"Port: \"<\/span> + einstellungen.getPort());\n        System.out.println(<span class=\"hljs-string\">\"Serverliste: \"<\/span> + einstellungen.getServerList());\n        System.out.println(<span class=\"hljs-string\">\"Zusatzinformationen: \"<\/span> + einstellungen.getZusatzInformationen());\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel haben wir eine Serviceklasse erstellt und die <code>AnwendungsEinstellungen<\/code>-Instanz \u00fcber den Konstruktor injiziert. Sie k\u00f6nnen nun problemlos auf alle Konfigurationsdaten zugreifen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 6: Anwendung starten<\/h3>\n\n\n\n<p>Jetzt k\u00f6nnen Sie Ihre Spring Boot-Anwendung starten und auf die Konfigurationsdaten zugreifen, die in der <code>AnwendungsEinstellungen<\/code>-Klasse definiert sind. F\u00fchren Sie einfach die <code>zeigeKonfiguration()<\/code>-Methode Ihres Dienstes aus.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">@SpringBootApplication\n@EnableConfigurationProperties(AnwendungsEinstellungen.class)\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeinAnwendungsStarter<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        ApplicationContext context = SpringApplication.run(Me\n\ninAnwendungsStarter.class, args);\n        MeinService service = context.getBean(MeinService.class);\n        service.zeigeKonfiguration();\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\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Komplexe Objektbaumstrukturen<\/h2>\n\n\n\n<p>In vielen F\u00e4llen werden Sie Konfigurationsdaten haben, die komplexere Strukturen erfordern. Dies k\u00f6nnen verschachtelte Objekte, Listen oder Maps sein. Spring Boot unterst\u00fctzt diese Szenarien problemlos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verschachtelte Objekte<\/h3>\n\n\n\n<p>Sie k\u00f6nnen verschachtelte Objekte in Ihrer <code>AnwendungsEinstellungen<\/code>-Klasse erstellen, um komplexere Konfigurationsdaten zu verwalten. Zum Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AnwendungsEinstellungen<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> Server server;\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter<\/span>\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Server<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> String name;\n    <span class=\"hljs-keyword\">private<\/span> int port;\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die entsprechenden Konfigurationsdaten in Ihrer <code>application.properties<\/code> oder <code>application.yml<\/code> Datei w\u00fcrden so aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">meineanwendung.server.name=Mein Server\nmeineanwendung.server.port=8080<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Listen<\/h3>\n\n\n\n<p>Wenn Sie eine Liste von Werten haben, k\u00f6nnen Sie sie einfach als Feld in Ihrer Konfigurationsklasse definieren. Zum Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AnwendungsEinstellungen<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;String&gt; serverList;\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die entsprechende Konfigurationsdatei w\u00fcrde so aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">meineanwendung.serverList=Server1,Server2,Server3<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Maps<\/h3>\n\n\n\n<p>Wenn Sie eine Map von Schl\u00fcssel-Wert-Paaren ben\u00f6tigen, k\u00f6nnen Sie dies ebenfalls in Ihrer Konfigurationsklasse definieren. Zum Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">public <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AnwendungsEinstellungen<\/span> <\/span>{\n    private <span class=\"hljs-built_in\">Map<\/span>&lt;<span class=\"hljs-built_in\">String<\/span>, <span class=\"hljs-built_in\">String<\/span>&gt; zusatzInformationen;\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die entsprechende Konfigurationsdatei w\u00fcrde so aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">meineanwendung.zusatzInformationen.key1=Wert 1\nmeineanwendung.zusatzInformationen.key2=Wert 2<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Die <code>@ConfigurationProperties<\/code>-Annotation ist ein leistungsf\u00e4higes Werkzeug in Spring Boot, um Konfigurationsdaten in Ihrer Anwendung zu verwalten. Mit dieser Annotation k\u00f6nnen Sie die Struktur Ihrer Konfigurationsdaten definieren, sie aus verschiedenen Quellen laden und nahtlos in Ihre Anwendung integrieren. Dies erm\u00f6glicht eine saubere und wartbare Verwaltung von Konfigurationsdaten, selbst bei komplexen Objektbaumstrukturen, Listen und Maps.<\/p>\n\n\n\n<p>In diesem Artikel haben wir die grundlegenden Schritte zur Verwendung von <code>@ConfigurationProperties<\/code> in Ihrer Spring Boot-Anwendung erl\u00e4utert. Wir haben auch gezeigt, wie Sie mit komplexeren Datenstrukturen umgehen k\u00f6nnen. Mit diesem Wissen k\u00f6nnen Sie Ihre Anwendungen flexibler gestalten und Konfigurationsdaten effizienter verwalten.<\/p>\n\n\n\n<p>Die Verwendung von <code>@ConfigurationProperties<\/code> ist nur eine der vielen M\u00f6glichkeiten zur Verwaltung von Konfigurationsdaten in Spring Boot. Je nach den Anforderungen Ihrer Anwendung k\u00f6nnen Sie auch andere Ans\u00e4tze wie Umgebungsvariablen, die Spring Cloud Config Server oder externe Konfigurationsquellen in Betracht ziehen. Die Wahl des richtigen Ansatzes h\u00e4ngt von den spezifischen Anforderungen Ihres Projekts ab.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring Boot ist ein Framework, das die Entwicklung von Java-Anwendungen erleichtert. Eine wichtige Komponente in jeder Anwendung ist die Verwaltung von Konfigurationsdaten. Diese Daten k\u00f6nnen Parameter wie Datenbankverbindungen, API-Endpunkte, Schwellenwerte und viele andere Einstellungen sein. In diesem Artikel werden wir untersuchen, wie Sie mit der @ConfigurationProperties-Annotation Konfigurationsdaten in Ihre Spring Boot-Anwendung einlesen und darauf zugreifen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-145","post","type-post","status-publish","format-standard","hentry","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/145","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=145"}],"version-history":[{"count":2,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/145\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/145\/revisions\/147"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}