Przesyłanie parametrów HTTP

Przesyłanie parametrów HTTP
Rafal Sieczkowski
  • Rejestracja:około 4 lata
  • Ostatnio:ponad rok
  • Postów:14
0

Witam,

pisze aplikację na androida i REST API do niej w node.js. Pobieram użytkowników GETem, ale musze przesłać zmienną do tego GETa i nie wiem jak się za to zabrać. Jak biorę POSTem to wysyła, ale nie pobiera mi znowu tablicy obiektów z bazy danych.

edytowany 1x, ostatnio: Riddle
Gouda105
  • Rejestracja:prawie 8 lat
  • Ostatnio:około miesiąc
  • Postów:487
1
Rafal Sieczkowski napisał(a):

Witam pisze aplikaje na androida i rest api do niej w node.js pobieram użytkownikow getem ale musze przesłać zmienna do tego geta i nie wiem jak sie za to zabrać bo jak biorę postem to wysyła ale nie pobiera mi znowu tablicy obiektow z bazy danych.

Jeśli używasz express to zmienną przekaż w ścieżce np.

Kopiuj
app.get('/users/:zmienna', (req, res) => {
  console.log(req.params.zmienna)
})

i wtedy odwołuj się do adresu np. example.com/users/abc (wtedy zmienna będzie miała wartość abc).
https://expressjs.com/en/guide/routing.html

lub pobierz z parametrów GET już bezpośrednio z url np.

Kopiuj
const querystring = require('querystring');
const url = 'http://example.com/index.html?code=string&key=12&id=false';

console.log(querystring.parse(url));
// > { 'http://example.com/index.html?code': 'string', key: '12', id: 'false' }

https://nodejs.org/en/knowledge/HTTP/clients/how-to-access-query-string-parameters/

edytowany 4x, ostatnio: Gouda105
AdamWox
Nie piszę w Node, ale czy dobrze widzę? Czy querystring.parse() to zwykły split('&')?
Gouda105
Nie do końca, bo po code nie ma znaku & oraz w rezultacie nie ma znaków =. Przykład wziąłem z dokumentacji, jednak dziwne są rezultaty, bo pominęło code i wstawiło je razem z adresem strony
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10079
0
AdamWox napisał(a):

Nie piszę w Node, ale czy dobrze widzę? Czy querystring.parse() to zwykły split('&')?

Nie, querystring.parse() po prostu parsuje query string, i to nie jest tak proste jak split po &. Dochodzi do tego ogarnianie klucz=value, urlDecode (bo np + oraz %20 to jest " ") oraz parametry sekwencyjne np klucz[]=value1&klucz[]=value2, to {klucz: ['value1', 'value2']}.

edytowany 1x, ostatnio: Riddle
lhp
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 4 godziny
  • Postów:49
0

W express w ścieżce wildcard, można tak:

Kopiuj
router.get(['/*.jpg', '/*.png'], async function(req, res, next) {
  const tokenEncoded = (new URL(req.url, "http://a.b")).searchParams.get("token");
  ...
});

gdzie req.url to np /resource/image/482164.1.jpg/?token=xxxyyyzzz


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.