{"id":7125,"date":"2021-01-07T16:49:42","date_gmt":"2021-01-07T16:49:42","guid":{"rendered":"https:\/\/www.fambach.net\/?p=7125"},"modified":"2026-10-15T23:42:39","modified_gmt":"2026-10-15T23:42:39","slug":"espressif-idf-fehlerbehandlung","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/espressif-idf-fehlerbehandlung\/","title":{"rendered":"Espressif IDF \u2013 Error Handling"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Fazit\" >Fazit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Verwandte_Beitrage\" >Verwandte Beitr\u00e4ge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Quellen\" >Quellen<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">Die Fehlerbehandlung ist in der IDF eine der Kernfunktionalit\u00e4ten. Auf sie st\u00f6\u00dft man praktisch in jedem Beispiel-Programm. Deshalb m\u00f6chte ich an dieser Stelle n\u00e4her auf sie eingehen. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alle wichtigen Funktionen der IDF geben Fehlercodes zur\u00fcck. Hierauf kann zum einen manuell reagiert werden (if Bedingung + eigenes Handling) oder sie k\u00f6nnen an ein spezielles Makro (Funktion) zur Ausgabe und Behandlung weitergeleitet werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ESP_ERROR_CHECK( int Fehler );\nESP_ERROR_CHECK( funktionDieInstZur\u00fcckGibt( ParamDerFunktion ) );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In der Praxis sieht das dann meist so aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ESP_ERROR_CHECK(gpio_config(&amp;config));\nESP_ERROR_CHECK(esp_timer_create(&amp;periodic_timer_args, &amp;periodic_timer));\nESP_ERROR_CHECK(esp_timer_start_periodic(periodic_timer, 500000));\nESP_ERROR_CHECK(esp_sleep_enable_timer_wakeup(500000));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dieses Verfahren macht den Code zum einen sicherer, da Fehler nicht unterschlagen werden und \u201eausf\u00fchrliche\u201c Fehlermeldungen erstellt werden. Zum anderen sorgt es aber auch daf\u00fcr, dass der Code schlechter lesbar ist. Sicherlich besser lesbar w\u00e4re das folgende Vorgehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ersatz f\u00fcr ESP_ERROR_CHECK(gpio_config(&amp;config));\nint error = gpio_config(&amp;config);\nESP_ERROR_CHECK(error);\n\n\/\/ Ersatz f\u00fcr ESP_ERROR_CHECK(\n\/\/ esp_timer_start_periodic(periodic_timer, 500000));\nerror = esp_sleep_enable_timer_wakeup(500000);\nif(error != ESP_OK){\n  ESP_ERROR_CHECK(error);\n} else {\n\/\/ mache was anderes\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aber keine Angst vor der kurzen Schreibweise, man gew\u00f6hnt sich schnell daran. Hier noch die Links zu m\u00f6glichen Fehlercodes und zur entsprechenden Doku der IDF<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/error-codes.html\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ub-content-link__anchor\">IDF-Fehlercodes<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-guides\/error-handling.html\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ub-content-link__anchor\">IDF- Fehlerbehandlung<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Verhalten bei Fehlern kann \u00fcber die Konfiguration beeinflusst werden. Normal ist \u201ePrint register and reboot\u201c eingestellt, das nervt aber eher, als es hilft. Deswegen habe ich es bei mir auf \u201ePrint registers and halt\u201c eingestellt, dann wird nach dem Fehler angehalten und es ist leichter, die Ausgabe zu inspizieren. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"108\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-21_57_20.jpg\" alt=\"\" class=\"wp-image-7026\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-21_57_20.jpg 596w, https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-21_57_20-300x54.jpg 300w, https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-21_57_20-18x3.jpg 18w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\"><figcaption>idf.py menuconfig<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"block-f8bd469f-d583-4ef9-926e-28681dd31815\">Kleiner Tipp: Im IDF Monitor werden die Codezeilen der Fehler angezeigt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1371\" height=\"427\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-22_03_31.jpg\" alt=\"\" class=\"wp-image-7027\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-22_03_31.jpg 1371w, https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-22_03_31-300x93.jpg 300w, https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-22_03_31-1024x319.jpg 1024w, https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-22_03_31-768x239.jpg 768w, https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-22_03_31-18x6.jpg 18w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\"><figcaption>Angabe der fehlerhaften Datei und Zeile<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So sieht der Testcode aus:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quellcode <code>main.c<\/code> (<span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/github.com\/sfambach\/espressif-idf\/tree\/master\/L2_Error_Handling\/main\" class=\"ub-content-link__anchor\">GitHub<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span>)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">\/** idf example\n *\n * 2. Example Check for error \n *\n * Some parts are copied from the official idf examples found on \n * https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/\n * \n * Modified by SteFam @ http:\/\/www.fambach.net\n *\n * GPLv3 \n * Blah blah blah, free to use. \n * I invested some time and mony in those examples if you want to delete this header \n * please do not forget to mention at least my website, thanks!\n*\/\n\n\n#include &lt;stdio.h&gt;\n#include &lt;esp_system.h&gt;\n#include &lt;esp_err.h&gt;\n\nvoid app_main(void)\n{\n\t\n\t\/\/* setup timer\n\tprintf(\"Simply give ok code to check function and see whats happend\\n\");\t\n\tESP_ERROR_CHECK(ESP_OK);\n\t\n\tprintf(\"And hopefully you see nothing between this and the last output\\n\");\n\t\n\t\t\n\tprintf(esp_err_to_name(0x106));\n\t \n\tchar text[30];\n\tesp_err_to_name_r(0x105,text,30);\n\tprintf(text);\n\t\n\t\n\t\/\/ undocument this to produce an error\n\t\/\/ESP_ERROR_CHECK(ESP_ERR_INVALID_MAC);\n\t\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><sub>Eigenen Fehler k\u00f6nnen <\/sub><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn eigene Funktionen auf Fehler laufen k\u00f6nnen, sollte hier ebenfalls eine Fehlermeldung zur\u00fcckgegeben werden. Im besten Fall gibt man eine schon existierende Fehlermeldung zur\u00fcck. (<span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-guides\/error-handling.html#error-handling-patterns\" target=\"_blank\" class=\"ub-content-link__anchor\">Beispiel aus der IDF Doku<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span>)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sdmmc_card_t* card = calloc(1, sizeof(sdmmc_card_t));\nif (card == NULL) {\n    return ESP_ERR_NO_MEM;\n}\nesp_err_t err = sdmmc_card_init(host, &amp;card);\nif (err != ESP_OK) {\n    \/\/ Clean up\n    free(card);\n    \/\/ Propagate the error to the upper layer\n    \/\/ (e.g. to notify the user).\n    \/\/ Alternatively, application can define and\n    \/\/ return custom error code.\n    return err;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fazit\"><span class=\"ez-toc-section\" id=\"Fazit\"><\/span>Fazit<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Fehlerbehandlung der IDF findet breite Anwendung. Der Code wird hierdurch nicht unbedingt \u00fcbersichtlicher, bleibt aber sch\u00f6n kurz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"verwandte-beitraege\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Verwandte Beitr\u00e4ge<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--broken ub-content-link--status-after is-broken\"><a href=\"https:\/\/www.fambach.net\/?p=6943\" class=\"ub-content-link__anchor\" title=\"This link appears to be broken.\">Hauptbeitrag<\/a><span class=\"ub-status ub-status--broken\" title=\"Link status: Broken\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: Broken<\/span><\/span><\/span><\/p>\n\n\n<div class=\"display-posts-listing\"><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-projekt-erstellen\/\">Espressif IDF \u2013 Projekt erstellen<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-konsolenausgabe\/\">Espressif IDF \u2013 Konsolenausgabe<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-fehlerbehandlung\/\">Espressif IDF \u2013 Fehlerbehandlung<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-log-nachrichten\/\">Espressif IDF \u2013 Lognachrichten<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-timer\/\">Espressif IDF \u2013 Timer<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-menuconfig\/\">Espressif IDF \u2013 Menuconfig<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/\">Espressif IDF \u2013 Tasks<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><div class=\"listing-item\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a class=\"title ub-content-link__anchor\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\">Espressif IDF \u2013 GPIOs<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quellen\"><span class=\"ez-toc-section\" id=\"Quellen\"><\/span>Quellen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/error-codes.html\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ub-content-link__anchor\">IDF-Fehlercodes<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"ub-content-link ub-content-link--ok ub-content-link--status-after\"><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-guides\/error-handling.html\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ub-content-link__anchor\">IDF- Fehlerbehandlung<\/a><span class=\"ub-status ub-status--ok\" title=\"Link status: OK\"><span class=\"ub-status__icon\" aria-hidden=\"true\">\u25cf<\/span><span class=\"screen-reader-text\">Link status: OK<\/span><\/span><\/span><\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Die Fehlerbehandlung ist in der IDF eine der Kernfunktionalit\u00e4ten. Auf sie st\u00f6\u00dft man praktisch in jedem Beispiel-Programm. Deshalb m\u00f6chte ich an dieser Stelle n\u00e4her auf sie eingehen. Alle wichtigen Funktionen der IDF geben Fehlercodes zur\u00fcck. Hierauf kann zum einen manuell reagiert werden (if Bedingung + eigenes Handling) oder sie k\u00f6nnen an ein spezielles Makro (Funktion) &#8230;<\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\" class=\"read-more-link\">Carry on reading <span class=\"screen-reader-text\">\"Espressif IDF &#8211; GPIOs\"<\/span> <span class=\"meta-nav\">\u2192<\/span><\/a>","protected":false},"author":1,"featured_media":7027,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[184,188,472,473,496,255],"tags":[497,148,499,465,474,492,476,500,491],"class_list":["post-7125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-c","category-esp-32","category-esp32-s2","category-espressif-idf","category-how-to","category-windows","tag-c-2","tag-esp32","tag-esp32s2","tag-espressif","tag-espressif-idf","tag-howto","tag-idf","tag-shulung","tag-tutorial","penguin-post","penguin-post-not-sticky"],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=7125"}],"version-history":[{"count":8,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7125\/revisions"}],"predecessor-version":[{"id":19687,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7125\/revisions\/19687"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=7125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=7125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=7125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}