1 Востаннє редагувалося javascriptIsLife (03.05.2020 21:28:26)

Тема: Як не парсити HTTP відповідь з сервера ?

Чим замінити звернення до API по HTTP щоб отримати з БД якісь дані в якому-неьбудь форматі який ще й потрібно опраювати? Хочу щоб в програмі на боці клієнта викликався метод на кшталт Storage.GetProductDetails() який би повертав не якийсь там JSON а, наприклад обʼєкт тієї мови на якій написана програма яка викликає даний метод. Хочу щоб було отак от прозоро без парсингу і щоб мені не потрібно було нічого для цього писати. Щоб це виглядало і праювало так ніби я зробив не запит до серверу, а викликав метод класу.

2

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

щоб отримати з БД якісь дані в якому-неьбудь форматі який ще й потрібно опраювати?

Повертайте з БД відразу JSON  :)

javascriptIsLife написав:

Хочу щоб в програмі на боці клієнта викликався ... який би повертав не якийсь там JSON а, наприклад обʼєкт тієї мови на якій написана програма яка викликає даний метод.

(Java + Hibernate) == "щастя"  :D (проксі і тд....)

javascriptIsLife написав:

Щоб це виглядало і праювало так ніби я зробив не запит до серверу, а викликав метод класу.

RPC

Подякували: leofun01, javascriptIsLife, 221VOLT3

3

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

Хочу щоб було отак от прозоро без парсингу і щоб мені не потрібно було нічого для цього писати.

Є така штука "octet-stream". (див. список медіа типів англ.).
В заголовок HTTP відповіді додаєте

Content-Type: application/octet-stream

і зможете передавати (теоретично) будь-які бінарні дані (потік). Але: це можна використовувати тільки для типів, які передаються за значенням (value type), не за посиланням (!refernce type). З класами, загалом, таке не пройде.

javascriptIsLife написав:

Щоб це виглядало і праювало так ніби я зробив не запит до серверу, а викликав метод класу.

Запити самі не пропадуть. Не хочете робити запити до сервера, то не робіть їх. Знайдіть спосіб зберігати дані на стороні клієнта, особливо ті дані, що часто використовуються.

Подякували: 221VOLT, ostap34PHP2

4

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

Чим замінити звернення до API по HTTP щоб отримати з БД якісь дані в якому-неьбудь форматі який ще й потрібно опраювати? Хочу щоб в програмі на боці клієнта викликався метод на кшталт Storage.GetProductDetails() який би повертав не якийсь там JSON а, наприклад обʼєкт тієї мови на якій написана програма яка викликає даний метод. Хочу щоб було отак от прозоро без парсингу і щоб мені не потрібно було нічого для цього писати. Щоб це виглядало і праювало так ніби я зробив не запит до серверу, а викликав метод класу.

а це точно називатиметься " звернення до API по HTTP"?

Подякували: koala, leofun012

5

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

і щоб мені не потрібно було нічого для цього писати

Для цього найміть програміста - і вам не доведеться нічого писати.

Подякували: leofun011

6

Re: Як не парсити HTTP відповідь з сервера ?

RPC виглядає складно.

7 Востаннє редагувалося fed_lviv (04.05.2020 15:28:12)

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

RPC виглядає складно.

Хм, так Ваш опис "побажань" взагалі виглядає "складно" ... цікаво :) Тому, на мою думку - RPC +- "щось воно". Ось гарна цяцька - gRPC

Бо для прикладу:

fed_lviv написав:

(Java + Hibernate) == "щастя"  :D (проксі і тд....)

Це суто іронія, оскільки Вам доведеться тягати всі бібліотеки з собою і на клієнті (не думаю що це лише в Java  :)  )

fed_lviv написав:

Повертайте з БД відразу JSON  :)

Тут 50 на 50. Звісно деякі СУБД Вам можуть надати таку можливість (інколи дійсно норм допомагає), але ж - "інколи" + "деякі"...

Подякували: leofun01, 221VOLT2

8

Re: Як не парсити HTTP відповідь з сервера ?

json то не єдиний формат )
в erlang існує bert,
а ще існує такий формат, як MessagePack

Подякували: leofun011

9

Re: Як не парсити HTTP відповідь з сервера ?

Спало на думку що, мабуть, краще за все зробити так: клієнт робить запит на звантаження данних і отримує у відповідь XML або SQL файл з категоріми товарами, описом, цінами, URL картинок та всим іншим; зберігає цей файл і звертається до нього в певні моменти перевіряючи оноволення. Не знаю як зробити гранулярні оновлення.

10

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

Спало на думку що, мабуть, краще за все зробити так: клієнт робить запит на звантаження данних і отримує у відповідь XML або SQL файл з категоріми товарами, описом, цінами, URL картинок та всим іншим;

Ой не туда. Або я чогось не розумію.
У вас клієнт всю базу зберігає ? чи як ... Якщо так, то для чого вам сервер ?

Подякували: fed_lviv, 221VOLT2

11

Re: Як не парсити HTTP відповідь з сервера ?

javascriptIsLife написав:

Спало на думку що, мабуть, краще за все зробити так: клієнт робить запит на звантаження данних і отримує у відповідь XML або SQL файл з категоріми товарами, описом, цінами, URL картинок та всим іншим; зберігає цей файл і звертається до нього в певні моменти перевіряючи оноволення. Не знаю як зробити гранулярні оновлення.

Можливо вам просто потрібно обрати який не будь web SPA framework ? Щоб потім з сервера пхати всі не обхідні данні до клієнту.

12

Re: Як не парсити HTTP відповідь з сервера ?

Ви можете написати (або згенерувати) OpenAPI специфікацію для ваших HTTP API ендпоїнтів (сервера) та потім згенерувати клієнт для них у мові клієнта. Воно згенерує і методи (наприклад, Storage.GetProductDetails()), і об'єкти (ProductDetails у цому випадку).

Подякували: ping, leofun012