Hi,
I am migrating my code that I did using ESP-IDF to the Platformio ide.
When trying to migrate my web server code I encounter a problem.
The WildCards function is not implemented in the esp_http_server.h library.
Is there any way to use WildCards?
My web server code is the one in the image. The underlined is what is not in the library.
Thanks 
The function httpd_uri_match_wildcard
is part of ESP-IDF v3.3 and should be available in PlatformIO.
Do you include the header file esp_http_server.h
? What’s the exact error message?
BTW: Code should be added as text. That way it’s possible to search for it, and it can be easily copied to reproduce a problem. That’s not possible with code in images.
1 Like
Hi @manuelbl,
This is my example code.
#include <WiFi.h>
#include "esp_http_server.h"
const char* ssid = "....";
const char* password = "...";
static esp_err_t on_url_hit(httpd_req_t *req)
{
ESP_LOGI(TAG, "url %s was hit", req->uri);
char *message = "hello world!";
httpd_resp_send(req, message, strlen(message));
return ESP_OK;
}
void setup(void) {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
httpd_handle_t server = NULL;
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
config.uri_match_fn = httpd_uri_match_wildcard;
if (httpd_start(&server, &config) != ESP_OK){
Serial.println("COULD NOT START SERVER");
}
httpd_uri_t first_end_point_config = {
.uri = "/",
.method = HTTP_GET,
.handler = on_url_hit};
httpd_register_uri_handler(server, &first_end_point_config);
Serial.println("HTTP server started");
}
void loop(void) {
}
The errors that it marks are.
src\main.cpp:36:10: error: ‘httpd_config_t {aka struct httpd_config}’ has no member named ‘uri_match_fn’
config.uri_match_fn = httpd_uri_match_wildcard;
^
src\main.cpp:36:25: error: ‘httpd_uri_match_wildcard’ was not declared in this scope config.uri_match_fn = httpd_uri_match_wildcard;`
I already looked in the esp_http_server library at the address
c: /.../.platformio/packages/framework-arduinoespressif32/tools/sdk/include /esp_http_server.h
and the WildCard member function is not implemented
any ideas?
Thanks 
Can you show your platformio.ini
file? It seems that your main change is not the build system (from ESP-IDF make/cmake to PlatformIO) but rather the framework (ESP-IDF to Arduino).
It is de basic one.
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
The latest productive Arduino core for ESP32 (version 1.0.4) is based on ESP-IDF 3.2 and does not yet contain uri_match_fn
and httpd_uri_match_wildcard
.
The upgrade to ESP-IDF 3.3 is underway and once it’s officially released, PlatformIO will likely upgrade as well.
1 Like
If you’re adventurous, you can add this line to platformio.ini
:
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32#master
You will then be using the Arduino core under development, which includes the functions you’re looking for.
1 Like
Perfect,
The two data are very useful to me. If I continue to develop in the stable version I will know what documentation to refer to; In case I want to try some of the new features, you also taught me how to do it.
Thank you very much @manuelbl 
Perhaps a stupid question here… but why are you specifying framework = arduino
if you want to use the ESP-IDF? If you specify framework = espidf
, you will be able to use ESP-IDF 3.3 LTS, which should support that wildcard function. But perhaps I’m missing something here?
Edit: OK, had a closer look at your full code sample, it looks like you’re using Arduino code and some ESP-IDF functions… nevermind! 
Hi @pfeerick,
Yes, I am using the Arduino sketch to be able to use classes and objects more easily. Also to take advantage of the large number of libraries made for Arduino. 
1 Like