Кажется, вы используете класс WebServer из библиотек ESP32 Arduino.Как вы уже выяснили, обратный вызов, указанный в методе on()
, не принимает никаких аргументов.
Однако у вас есть альтернатива.Вы можете указать «заполнитель» в URL-пути - используя фигурные скобки - {}
.В обратном вызове соответствующий аргумент может быть получен с использованием метода pathArg()
, который принимает индекс аргумента в качестве параметра.
Пример ...
Вы можете определить конечную точку APIкак /readBatt/<battery number>
.Чтобы настроить сервер для обработки запросов к этой конечной точке, вы должны использовать что-то вроде
server.on("/readBatt/{}", runTest);
При обратном вызове вы получите первый аргумент следующим образом ...
static void runTest() {
String batteryNumber = server.pathArg(0);
Serial.println("Request to read battery");
String response = "You attempted to read battery " + batteryNumber;
response += ".\nThis endpoint is a placeholder. Check again soon!";
server.send(200, "text/plain", response);
}
Наконец ... Предположим, что ваш ESP8266 работал на локальном IP-адресе 192.168.1.9.Вы можете получить доступ к своей новой конечной точке API, открыв в браузере
http://192.168.1.9/readBatt/1
.(Замените 1
на соответствующий номер батареи.)
Я не думаю, что есть версии pathArg()
, которые, к сожалению, возвращают целое число, поэтому вам, возможно, придется выполнить преобразование в какой-то момент.