При создании веб-сервиса Restful можно использовать стандартный синтаксис http get и http post?

Мы работаем в офисе, используя Oracle APEX для создания некоторых веб-сервисов. После биения головой о стену мы, наконец, поняли, что термины get & post, когда речь идет о службах RESTful, не совпадают со стандартным HTTP.

Нам нужно будет создать два типа веб-сервисов;

В первом внешнее приложение передает несколько полей, а метод запрашивает запись и отправляет данные обратно во внешнее приложение.

Во втором внешнее приложение создает запись из 30 полей, которую необходимо вставить методом в БД.

В обычном веб-приложении мы в обоих случаях обычно отправляем данные по http на страницу cgi (asp, aspx, pl...), которая будет анализировать поля и делать то, что нужно сделать.

Поскольку мы написали новое приложение в APEX и хотели бы присоединиться к концу 20-го века, мы подумали, что будем использовать веб-сервис на стороне провайдера. Потребителем будет AS3/flex/flash.

Можем ли мы по-прежнему использовать традиционную методологию http post и/или http get для определения пар name=data и отправки их в веб-службу?

До сих пор мы видели, что передаваемые данные (по крайней мере, в APEX Restful GET) должны быть позиционными, а не парами имя=данные.

Я предполагаю, что первый вопрос заключается в том, где мы можем получить некоторые основные понятия о том, как передавать данные, используя «RESTful» get & post? Что-то, нацеленное на болвана веб-сервиса, было бы хорошо.

Другой вопрос: если можно использовать методологию HTTP get/post, как это будет сделано в Oracle APEX v5.0?


person Paul Stearns    schedule 19.01.2017    source источник


Ответы (1)


В вашем посте много вопросов, возможно, если вы сузите его до конкретной проблемы, вы получите более точные ответы. Я использовал службы RESTful с APEX 4.2, 5, 5.1, и они работают нормально.

В первом внешнее приложение передает несколько полей, а метод запрашивает запись и отправляет данные обратно во внешнее приложение.

Это типичный GET-запрос. Вы передаете параметры (я обычно передаю их как часть URL-адреса), используете их в запросе и возвращаете значения. Вы даже можете передать их в блок PL/SQL, выполнить любую необходимую обработку, а затем вернуть результаты.

Во втором внешнее приложение создает запись из 30 полей, которую необходимо вставить методом в БД.

Это типичный POST-запрос (хотя вы все еще можете использовать GET, но не рекомендуется). Формат отправки данных важен. Я сделал это, используя формат JSON, и получил переменную привязки :body в конце APEX. В APEX вы можете разобрать его и вставить в таблицу.

Несколько ресурсов могут помочь вам начать работу: http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/apex/r50/Restful%20Services/restful_services.html#section1

Это особенно полезно для POST:
https://ruepprich.wordpress.com/2016/03/22/apex-rest-post/

person Hawk    schedule 19.01.2017
comment
Хоук, спасибо за ответ. Наше непонимание довольно простое. Что нам нужно знать, и ссылки, которые мы рассмотрели ранее, кажется, не охватывают, так это то, как вы вызываете эти службы, скажем, из HTML? (ASPX, PL, ASP PHP) Термины, используемые GET/POST, похоже, не связаны с теми же терминами в стандартном HTML. - person Paul Stearns; 19.01.2017
comment
У нас не возникло проблем с созданием веб-службы APEX. Поскольку я пишу потребителя, я восстал против синтаксиса myservice.com:8888 /сервис/метод/парам1/парам2/парам3 - person Paul Stearns; 19.01.2017
comment
@PaulStearns Над которыми я не работал (ASPX, PL, ASP PHP), но я советую начать тестирование своих сервисов с помощью общего клиентского инструмента REST, такого как почтальон. Эти инструменты являются стандартными. Как только вы заставите службу работать там, преобразование ее в любой другой клиент будет вопросом чтения документации. - person Hawk; 20.01.2017
comment
@PaulStearns Я тестировал службы APEX с помощью почтальона, а также гибридного мобильного приложения (HTML5), и единственное, что отличалось, это то, что я передал параметры в URL-адресе между фигурными скобками, например, `domain/ords/{parm1}/{ парм2}/... и т.д.'. Но это зависит от клиента и не связано с APEX. - person Hawk; 20.01.2017