<p>рдЕрдиреБрд░реЛрдз рд╡рд░реНрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: " ├н ", " ", " " ..</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЕрдЧре░ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: request/request

рд╕рд╛рд░рд╛рдВрд╢

рд╣реИрд▓реЛ, рдХреБрдЫ рджрд┐рди рд╣реЛ рдЧрдП рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ [рдУрдкрдирд╡реЗрджрд░рдореИрдк рдПрдкреАрдЖрдИ] (https://openweathermap.org/current) рд╡рд╛рд▓реЗ рд╢рд╣рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдз рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
http://api.openweathermap.org/data/2.5/weather?q= CITY &units=metric&appid= APIKEY

(рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдореБрдлреНрдд рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рдкрд░рд┐рдгрд╛рдо: (JSON)
{"coord":{"lon":-73.61,"lat":45.5},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"base":"stations","main":{"temp":24.65,"pressure":1012,"humidity":38,"temp_min":24,"temp_max":25},"visibility":48279,"wind":{"speed":7.2,"deg":280,"gust":11.3},"clouds":{"all":40},"dt":1535058000,"sys":{"type":1,"id":3829,"message":0.0049,"country":"CA","sunrise":1535018756,"sunset":1535068008},"id":6077243,"name":"Montreal","cod":200}

рдореИрдВ рдЕрдиреБрд░реЛрдз рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЧрдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

``

function req (url, jsonStatus){
    const options = {
        uri: url,
        json: jsonStatus 
    }

    console.log(`Sent: ${options.uri}`)

    rp(options)
        .then(repos => {
            console.log(`Success: ${repos.sys.country}`) // Country code is returned
        })
        .catch(err => {
            console.log(`Error: ${err}`)
        })
}}
const owmUrl = `http://api.openweathermap.org/data/2.5/weather?q=${City}&units=metric&appid=${apiKey}`;
req(owmUrl, true);

Outpout (рдХрдВрд╕реЛрд▓) (рдЬрд╣рд╛рдВ рд╢рд╣рд░ 'рдореЙрдиреНрдЯреНрд░рд┐рдпрд▓' рд╣реИ):
`╬╗ рдиреЛрдб рдРрдк
рднреЗрдЬрд╛ рдЧрдпрд╛: http://api.openweathermap.org/data/2.5/weather?q=montreal&units=metric&appid= APIKEY

рд╕рдлрд▓рддрд╛: рд╕реАрдП`

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЕрдиреБрд░реЛрдз рдПрдХ рд╕рдлрд▓рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ "Chamber├н" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рд╡рд╛рд▓реЗ рд╢рд╣рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпреВрдЖрд░рдПрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
http://api.openweathermap.org/data/2.5/weather?q=Chamber├н&units=metric&appid= APIKEY

рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реИ (JSON рдлрд┐рд░ рд╕реЗ):
{"coord":{"lon":-3.71,"lat":40.44},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":27.24,"pressure":1020,"humidity":32,"temp_min":27,"temp_max":28},"visibility":10000,"wind":{"speed":3.6,"deg":110},"clouds":{"all":0},"dt":1535059800,"sys":{"type":1,"id":5488,"message":0.0039,"country":"ES","sunrise":1535002448,"sunset":1535050778},"id":3117735,"name":"Chamber├н","cod":200}

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рднреЗрдЬрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:

╬╗ node app Test Sent: http://api.openweathermap.org/data/2.5/weather?q=Chamber├н&units=metric&appid=0ec25df3f69726843a58a325b97e845d Error: StatusCodeError: 404 - {"cod":"404","message":"city not found"}

рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рдорд┐рд▓рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╣реА рдпреВрдЖрд░рдПрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдЕрдиреБрд░реЛрдз-рд╡рд╛рджрд╛ рдФрд░ рдЕрдиреБрд░реЛрдз-рд╡рд╛рджрд╛-рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдХреБрдЫ рдЧрд▓рдд рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рддреЛ рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА :)

рдзрдиреНрдпрд╡рд╛рджред

(рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдореЗрд░реЗ рдореБрджреНрджреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ :))

рдЖрдкрдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг

| рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ | рд╕рдВрд╕реНрдХрд░рдг
| ---------------- | --------
| рдЕрдиреБрд░реЛрдз | рдЕрдиреБрд░реЛрдз@2.87.0
| рдиреЛрдб | v10.9.0
| рдПрдирдкреАрдПрдо | 6.2.0
| рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо | рд╡рд┐рдВрдбреЛрдЬрд╝ 8.1 x64
| рдмреНрд░рд╛рдЙрдЬрд╝рд░ | рдУрдкреЗрд░рд╛

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпреВрдЖрд░рдПрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреИрд╕реЗ рдПрдиреНрдХреЛрдб рдХрд░реЗрдВ?

рдпрджрд┐ рд╢рд╣рд░ рдХреЗ рдирд╛рдо рдореЗрдВ рдЧреИрд░-ASCII рд╡рд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЙрд╕реЗ рдПрдирдХреЛрдб рдХрд░реЗрдВ:

console.log(encodeURIComponent('Montreal'));
console.log(encodeURIComponent('Montr├йal'));
console.log(encodeURIComponent('Chamber├н'));

рдЖрдЙрдЯрдкреБрдЯ:

Montr%C3%A9al
Chamber%C3%AD

рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд╛рдо рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪреЗрдореНрдмрд░реА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛:

{ coord: { lon: -3.71, lat: 40.44 },
  weather:
   [ { id: 800, main: 'Clear', description: 'clear sky', icon: '01n' } ],
  base: 'stations',
  main:
   { temp: 21.98,
     pressure: 1020,
     humidity: 49,
     temp_min: 21,
     temp_max: 23 },
  visibility: 10000,
  wind: { speed: 1.5, deg: 40 },
  clouds: { all: 0 },
  dt: 1535068800,
  sys:
   { type: 1,
     id: 5488,
     message: 0.0038,
     country: 'ES',
     sunrise: 1535088854,
     sunset: 1535137170 },
  id: 3117735,
  name: 'Chamber├н',
  cod: 200 }

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпреВрдЖрд░рдПрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреИрд╕реЗ рдПрдиреНрдХреЛрдб рдХрд░реЗрдВ?

рдпрджрд┐ рд╢рд╣рд░ рдХреЗ рдирд╛рдо рдореЗрдВ рдЧреИрд░-ASCII рд╡рд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЙрд╕реЗ рдПрдирдХреЛрдб рдХрд░реЗрдВ:

console.log(encodeURIComponent('Montreal'));
console.log(encodeURIComponent('Montr├йal'));
console.log(encodeURIComponent('Chamber├н'));

рдЖрдЙрдЯрдкреБрдЯ:

Montr%C3%A9al
Chamber%C3%AD

рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд╛рдо рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪреЗрдореНрдмрд░реА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛:

{ coord: { lon: -3.71, lat: 40.44 },
  weather:
   [ { id: 800, main: 'Clear', description: 'clear sky', icon: '01n' } ],
  base: 'stations',
  main:
   { temp: 21.98,
     pressure: 1020,
     humidity: 49,
     temp_min: 21,
     temp_max: 23 },
  visibility: 10000,
  wind: { speed: 1.5, deg: 40 },
  clouds: { all: 0 },
  dt: 1535068800,
  sys:
   { type: 1,
     id: 5488,
     message: 0.0038,
     country: 'ES',
     sunrise: 1535088854,
     sunset: 1535137170 },
  id: 3117735,
  name: 'Chamber├н',
  cod: 200 }

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж !!

:+1:

рдзрдиреНрдпрд╡рд╛рдж @davejagoda

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕