|
HTTP-сервисы, передача данных | ☑ | ||
---|---|---|---|---|
0
Paimiji
19.01.21
✎
12:34
|
Здравствуйте. Пытаюсь научиться работать с HTTP-сервисами. Подскажите, если я хочу по http обратиться к своей базе и получить данные из регистра, то я должен в 1С создать Шаблон URL, у которого определить метод GET? И потом с помощью этого метода обращаться к базе и получать данные?
И если я потом захочу отдать какие то данные в ответ, то какой метод http для этого необходимо определять? |
|||
1
ДенисЧ
19.01.21
✎
12:38
|
||||
2
butterbean
19.01.21
✎
12:42
|
(0) по получению данных - да, порядок такой.
что значит "отдать какие то данные в ответ"? если это в смысле в 1С что-то записать в базу, то тогда POST-запрос, хотя в принципе можно в базу и по get-запросу записи делать |
|||
3
Paimiji
19.01.21
✎
12:49
|
(2) "отдать какие то данные в ответ" я подразумеваю, что я подключился к своей базе по get запросу и хочу отправить в ответ какой нибудь набор данных: выборку, таблицу значений или еще что нибудь
|
|||
4
butterbean
19.01.21
✎
13:08
|
(3) ну дык в теле ответа на свой get-запрос ты и отправляй что хочешь, зачем еще какой-то запрос определять?
|
|||
5
BaZZiL
19.01.21
✎
13:30
|
(3)
когда "подключился к базе по get запросу", это и означает что в ответ нужно отправить какие-то данные, которые надо в этом ответе сформировать Например, создал URLшаблон GET "НоменклатураПоШтрихкоду" с адресом /goods/{BarCode} В шаблоне создал метод GET c обработчиком НоменклатураGET Функция НоменклатураGET(Запрос) Ответ = Новый HTTPСервисОтвет(200); Штрихкод = Запрос.ПараметрыURL.Получить("BarCode"); ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб); Запись = Новый ЗаписьJSON; Запись.УстановитьСтроку(ПараметрыЗаписиJSON); Номенклатура = НайтиНоменклатуруПоШтрихкоду(Штрихкод); Если Номенклатура <> Неопределено Тогда ДанныеОтвет = Новый Структура; ДанныеОтвет.Вставить("Номенклатура",Номенклатура.Наименование); Иначе Ответ = Новый HTTPСервисОтвет(404); ДанныеОтвет ="Номенклатура со штрихкодом "+Штрихкод+" не найдена"; КонецЕсли; ЗаписатьJSON(Запись, ДанныеОтвет); Результат = Запись.Закрыть(); Ответ.УстановитьТелоИзСтроки(Результат); Ответ.Заголовки.Вставить("Content-type", "application/json"); Возврат Ответ; КонецФункции |
|||
6
Paimiji
19.01.21
✎
13:32
|
(4) (5) Ага, понял, спасибо огромное! Можно еще небольшой вопрос? У меня получилось написать GET и получить строку. Теперь хочу попробовать передать массив, но когда я прописываю
(КодыТест - это массив, заполненный) Результат = КодыТест; Ответ.УстановитьТелоИзСтроки(Результат,КодировкаТекста.UTF8); Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8"); То получаю просто слово "Массив" в результате. А как сделать, чтобы значения массива передались? |
|||
7
BaZZiL
19.01.21
✎
13:37
|
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда ТЗ = РезультатЗапроса.Выгрузить(); Иначе Ответ = Новый HTTPСервисОтвет(404); Ответ.УстановитьТелоИзСтроки("бла-бла-бла не найдено"); Ответ.Заголовки.Вставить("Content-type", "application/json"); Возврат Ответ; КонецЕсли; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб); Запись = Новый ЗаписьJSON; Запись.УстановитьСтроку(ПараметрыЗаписиJSON); ТабНакл = Новый Массив; Для Каждого Стр Из ТЗ Цикл Накл = Новый Структура; Накл.Вставить("Товар",Товар); Накл.Вставить("Количество",Количество); ТабНакл.Добавить(Накл); КонецЦикла; ЗаписатьJSON(Запись,ТабНакл); Результат = Запись.Закрыть(); Ответ.УстановитьТелоИзСтроки(Результат); Ответ.Заголовки.Вставить("Content-type", "application/json"); Возврат Ответ; |
|||
8
BaZZiL
19.01.21
✎
13:40
|
Разумеется
Стр.Товар Стр.Количество |
|||
9
Paimiji
19.01.21
✎
13:46
|
(7) Спасибо Вам большое за помощь и советы! Все получилось:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |