Noodl로 HTTP 통신

4974 단어 Noodl원형
저번
스웨덴의 원형 공구 Noodl을 만져봤어요.
HTTP 통신
HTTP 통신도 그걸 해볼 수 있으니까.
일기예보 API 사용
https://openweathermap.org/api
※ 사전에 sign up, API 키를 획득해야 합니다.
절차.
1. REST 노드 구성
  • Request
  • Resource: /forecast
  • Method: GET
  • Backend
  • Endpoint: http://api.openweathermap.org/data/2.5
  • Script
  • define({
      // The input ports of the REST node, name of input and type
      inputs:{
          apiKey:'string',
          city: 'string'
      },
    
      // The output ports of the REST node, name of output and type
      outputs:{
          city:'string',
          country:'string',
          weather:'string',
          lat:'number',
          long:'number',
          windangle:'number',
          windspeed:'number',
          temperature:'number',
          humidity: 'number'
      },
    
      //Add custom code to setup the request object before the request
      //is made.
      //
      //*request.resource     contains the resource path of the request.
      //*request.method       contains the method, GET, POST, PUT or DELETE.
      //*request.headers      is a map where you can add additional headers.
      //*request.parameters   is a map the parameters that will be appended
      //                      to the url.
      //*request.content      contains the content of the request as a javascript
      //                      object.
      //
      // The inputs and outputs maps can also be accessed via *this.inputs and
      // *this.outputs.
      request:function(inputs,request) {        
        request.parameters.APPID = inputs.apiKey;
        request.parameters.q = inputs.city; 
        request.parameters.v = inputs.country;
      },
    
      // Add custom code to convert the response content to outputs
      //
      //*response.status    The status code of the response
      //*response.content   The content of the response as a javascript
      //                    object.
      //*response.request   The request object that resulted in the response.
      //
      // The inputs and outputs maps can also be accessed via *this.inputs and
      // *this.outputs.
      response:function(outputs,response) {
          outputs.city = response.content.city.name;
          outputs.country = response.content.city.country;
          outputs.lat = response.content.city.coord.lat;
          outputs.long = response.content.city.coord.lon;
          outputs.weather = response.content.list[2].weather[0].description;
    
          outputs.windangle = response.content.list[2].wind.deg;
          outputs.windspeed = response.content.list[2].wind.speed;
    
          outputs.temperature = response.content.list[2].main.temp;
          outputs.humidity = response.content.list[2].main.humidity;
    
      }
    })
    
    
  • Inputs
  • apiKey: openweathermapのkey
  • city: tokyo
  • 2. 표시된 text node를 루트 아래에 구성
  • label 이름: temperature
  • text: tap here
  • 3. 연결
  • Root REST
  • Source: Tap
  • Target: Fetch
  • REST의 Text
  • Source: temperature
  • Target: text
  • 4. 실행
    화면을 클릭하면 숫자가 나와요.

    이 API는 섭씨도 화씨도 아닌 켈빈으로 돌아왔기 때문에 가격에 착오가 없다.
    여기서부터 진짜 정점이에요.
    Noodl의 흥미로운 것은 js도 움직인다는 것이다.
    따라서 js에서는 켈빈을 섭씨(℃)로 변환한다.
    5. js의 노드를 추가하여 다음 코드를 쓴다
    run에서 단위를 바꾸는 코드입니다.
    단순히 inputs의 켈빈을 섭씨로 변환한 다음outputs로 되돌아간다.
    define({
        inputs: {
            kelvin: "string"
        },
        outputs: {
            result: "string"
        },
        destroy: function(inputs, outputs) {
    
        },
        setup: function(inputs, outputs) {
    
        },
        run: function(inputs, outputs, changedInputs) {
            if (inputs.kelvin !== undefined) {
                let kelvinNum = Number(inputs.kelvin);
                let degree = (kelvinNum - 273.15).toFixed(2);
                outputs.result = String(degree);
            } else {
                outputs.result = 'Tap Here !!'   
            }
        }
    });
    
    6. 연결
  • REST - js
  • Source: temperature
  • Target: kelvin
  • JS에서 text로
  • Source: result
  • Target: text
  • 7. 실행
    망했다

    JS를 쓰면 이미 뭐든지 갈 수 있어 대단해.
    다음번
    Noodl로 맞춰봐. - Qita.

    좋은 웹페이지 즐겨찾기