Экспресс ограничение длины параметра для GET - PullRequest
0 голосов
/ 11 октября 2018

У меня есть приложение nodejs, в котором я использую экспресс для REST API.

Один из API, который принимает запрос SQL, запускает его в БД и возвращает ответ JSON.Все работало нормально, пока я не протестировал API с длинным SQL-запросом.
После отладки я заметил, что SQL-запрос обрезается автоматически.

Есть ли ограничение на длину параметра, который может быть передан в GET URL?

Так выглядит мой API

app.get('/v1/runsql/:query', (req, res) => {
let result = runQuery.executeQuery(req.params.query);
..... execute some more code here
})

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Протокол http не ограничивает длину URL-адреса, но ограничение задают браузер и сервер (независимо от того, какой Node или другие).Если вы действительно хотите реализовать это, вы можете использовать метод POST вместо Get

И спецификация протокола http установит, что: Сервер может вернуть код 414 если длина URL-адреса выходит за пределы

0 голосов
/ 11 октября 2018

Узел налагает ограничение не на сам URL, а на общие заголовки запроса (включая URI). Запрашиваемые заголовки + URI не могут превышать 80 КБ.

Кроме того, невероятно плохая идея выставлять API, который позволяет произвольные запросы SQL независимо от того, находятся они в URL или нет.Большинство приложений тратят много усилий, пытаясь не допустить, чтобы произвольный SQL запрашивал записи, которые не должны быть выставлены, отбрасывали таблицы и т. Д. Преднамеренно выставляя такую ​​конечную точку, вы чувствуете, что у вас возникают проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...