powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Сырые данные из %request в WEB API
5 сообщений из 5, страница 1 из 1
Сырые данные из %request в WEB API
    #39802136
nurlybekovnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех!

Проблема: не могу получить значения из form-data, отправленного клиентом, в том числе и файл.

Код клиента:
Код: javascript
1.
2.
3.
4.
5.
6.
var formData = new FormData();
formData.append("name", "myName");
formData.append("file", myFile);
var request = new XMLHttpRequest();
request.open("POST", "http://mysite.com/api/submitform");
request.send(formData);



На бэк такой route:
<Route Url="/api/submitform" Method="POST" Call="MyClass:ApiCreate"/>

Код на бэк:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
ClassMethod ApiCreate() As %CSP.Request
{
s c = ..%New()
// Здесь как-то надо получить данные из form-data
d c.%Save()
q ..ApiGet(c.%Id())
}



Пробовал:
%request.Get("name")
%request.GetMimeData("name")
%request.MimeData("name", 1)
%request.Data("name", 1)

Но везде возвращает пустоту. Хотел попробовать через %request.Content, но стринга, и, думаю, возникнут сложности при чтении файла, и, кажется, это очень плохая идея. В самом %request методы Get, Data, GetMimeData существуют, он типа %CSP.Request, проверял.

Спасибо!
...
Рейтинг: 0 / 0
Сырые данные из %request в WEB API
    #39802227
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nurlybekovnt, метод ApiCreate как и любой другой REST обработчик должен возвращать %Status.

Попробуйте для отладки поставить в начало метода этот код:
Код: sql
1.
2.
3.
set %response.ContentType = "html"
do ##class(%CSP.Utils).DisplayAllObjects()
quit $$$OK


Тогда при отправке запроса в ответ будет HTML страница где будут видны все части запроса, а исходя из этой страницы уже просто понять как взять что-то из %request.
...
Рейтинг: 0 / 0
Сырые данные из %request в WEB API
    #39802263
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eduard93,

Не, вот в том числе и файл - это неправильно. Именно файл получается иначе.
Для файла как-то так:

Код: sql
1.
2.
3.
4.
5.
 #dim %request as %CSP.Request
 #dim stream as %CSP.BinaryStream = %request.GetMimeData("file")
 s file=##class(Data.OrderFile).%New()
 s file.Filename=stream.FileName
 d file.Content.CopyFrom(stream)



А для обычных полей
Код: sql
1.
%request.Get("name")



Если не получается, то либо что-то с отправкой данных, либо вы при получении ломаете или теряете объект запроса.
...
Рейтинг: 0 / 0
Сырые данные из %request в WEB API
    #39802992
nurlybekovnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

Дело в том, что я уже пробовал %request.Get("name")
...
Рейтинг: 0 / 0
Сырые данные из %request в WEB API
    #39803208
nurlybekovnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eduard93,

Да, конечно, там %CSP.request стоит, потому что я хотел посмотреть класс %CSP.request через хоткей F12, забыл убрать
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Сырые данные из %request в WEB API
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]