Приложение RESTful, хотите отправить запрос SQL как запрос на чтение - PullRequest
0 голосов
/ 07 декабря 2010

Я работаю над веб-приложением RESTful. Теперь я хочу расширить запрос на чтение (GET) для обработки SQL-подобных запросов, но я не смог закодировать их в URL из-за всех специальных символов ("", "/", "<", ">", "{", "}", так далее.). Я уже читал, что не стоит использовать тело сообщения в GET-запросе. Поэтому на данный момент я вижу только один вариант - использовать запрос POST. Но, опять же, я бы сказал, что это тоже не очень хорошее решение, потому что я бы использовал POST для операции чтения. Согласно принципам REST, чтение должно выполняться запросом GET, а POST должен использоваться только для манипулирования данными.

Что ты думаешь? Как лучше всего отправлять запросы в стиле SQL в мое веб-приложение?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Использовать CGI :: escape ("select * from NEVER_DO_SUCH_THINGS, где SQL_INJECTION> 'unsafe'")

0 голосов
/ 07 декабря 2010

См. Условные обозначения URI OData , где приведен один пример того, как вставить операции запроса в URI.

Однако вы чрезмерно ограничиваете использование POST. Идея методов HTTP заключается в том, что когда характеристики запроса соответствуют характеристикам GET, PUT и DELETE, вы ДОЛЖНЫ использовать их. Вы НЕ ДОЛЖНЫ использовать их, если характеристики не совпадают. Однако POST - это метод подстановочных знаков, который можно использовать для любого запроса.

Нет требования, что POST должен каким-либо образом записывать, обновлять или манипулировать данными. Сказав клиенту, что ему нужно использовать метод POST, вы просто не даете клиенту никаких обещаний о поведении сервера.

Нет ничего плохого в использовании POST для отправки порций данных, которые будут использоваться для запросов. Недостатком является то, что ответ POST не кэшируется, и поэтому вы не можете воспользоваться этим.

Существует множество гибридных подходов, один из которых заключается в том, чтобы POST-параметры запроса и заставить сервер создать новый временный ресурс, представляющий запрос, а затем вернуть перенаправление, чтобы клиент получил доступ к ресурсу временного запроса.

...