Couchbase 5.0에서 출시 된 cURL이라는 자이어니즘으로 API를 SELECT 문으로 가져옵니다.

15205 단어 N1QLCouchbasecurl
Couchbase에서 5.0에서 cURL라는 함수가 구현되었습니다.
DB인데 cURL를 사용할 수 있습니다.
htps : // bg. 이렇게 ch바세. 이 m /로 ゔ ぉぺぺ r

즉 무슨 일이냐는 것을 Google Map의 API로 설명하면.
SELECT CURL("https://maps.googleapis.com/maps/api/geocode/json", {"request":"GET", "data":"address=minato&components=country:Japan&key=APIKEY"});

Couchbase (데이터베이스)에 요청하면,
Couchbase는 마치 자신이 보유한 것처럼 요청 결과를 요청 결과를 반환합니다.
(물론 Couchbase는 Google Map의 API 응답을 미리 유지하지 않습니다.)
[
  {
    "$1": {
      "results": [
        {
          "address_components": [
            {
              "long_name": "Minato",
              "short_name": "Minato",
              "types": [
                "locality",
                "political"
              ]
            },
            {
              "long_name": "Tokyo",
              "short_name": "Tokyo",
              "types": [
                "administrative_area_level_1",
                "political"
              ]
            },
            {
              "long_name": "Japan",
              "short_name": "JP",
              "types": [
                "country",
                "political"
              ]
            }
          ],
          "formatted_address": "Minato, Tokyo, Japan",
          "geometry": {
            "bounds": {
              "northeast": {
                "lat": 35.6825986,
                "lng": 139.7828356
              },
              "southwest": {
                "lat": 35.6231249,
                "lng": 139.7087511
              }
            },
            "location": {
              "lat": 35.6580681,
              "lng": 139.7515992
            },
            "location_type": "APPROXIMATE",
            "viewport": {
              "northeast": {
                "lat": 35.6825986,
                "lng": 139.7828356
              },
              "southwest": {
                "lat": 35.6231249,
                "lng": 139.7087511
              }
            }
          },
          "place_id": "ChIJ8yIZtLuLGGARrGzw8nX96zM",
          "types": [
            "locality",
            "political"
          ]
        }
      ],
      "status": "OK"
    }
  }
]

(로컬 환경에서 649ms 걸렸습니다)

이것만으로는 보통 cURL을 두드린 것과 큰 차이가 없습니다.

예를 들어, 이전 요청 중 필요한 것은 geometry 그렇다면 어떨까요?
통상의 SELECT문과 같이 취급할 수 있으므로, FROM를 cURL 의 리퀘스트로 하여 SELECT로 취득하고 싶은 항목을 좁힐 수 있습니다.
SELECT result.geometry FROM CURL("https://maps.googleapis.com/maps/api/geocode/json", {"request":"GET", "data":"address=minato&components=country:Japan&key=APIKEY"}).results[0] AS result;
[
  {
    "geometry": {
      "bounds": {
        "northeast": {
          "lat": 35.6825986,
          "lng": 139.7828356
        },
        "southwest": {
          "lat": 35.6231249,
          "lng": 139.7087511
        }
      },
      "location": {
        "lat": 35.6580681,
        "lng": 139.7515992
      },
      "location_type": "APPROXIMATE",
      "viewport": {
        "northeast": {
          "lat": 35.6825986,
          "lng": 139.7828356
        },
        "southwest": {
          "lat": 35.6231249,
          "lng": 139.7087511
        }
      }
    }
  }
]

(로컬 환경에서 167.96ms 걸렸습니다.)

이것은 API에서 제공되는 필드의 필터링 옵션을 사용하는 것이 아니라 Couchbase 엔진에서 항목을 구분하기 때문에 API에서 예상하지 않은 요청 결과를 얻는 프로그램 구현하지 않고 쿼리를 작성하는 것만으로 대응할 수 있습니다.

이번에는 하지 않았습니다만, 보통의 데이터를 취급하는 것과 같이 사용할 수 있으므로, API의 취득 결과와 DB의 내용을 맞대고 싶은 경우도, 프로그램으로 API 리퀘스트 해 온 데이터와 DB로부터 취득해 온 데이터를 프로그램 쓰고 맞추는 것이 아니라, 자신의 데이터와 cURL로 취득한 데이터를 Couchbase상에서 JOIN하는 것만으로 가능하게 되었습니다.
おまえのものは俺のもの。俺のものも俺のもの


Facebook이나 Twitter의 데이터는 서비스 만들면 자주 사용하기 때문에, Couchbase로 취득&가공하고 나서 프로그램에 건네주면(자)라고 하는 사용법을 할 수 있을 것 같습니다.

참조 : htps : //에서 ゔぇぺぺr. 이렇게 ch바세. 코 m/도쿠멘들 온/세 rゔぇr/쿤린 t/응 1ql/응 1ql-㎁구아게레후페렌세/쿠 rl. HTML

자세히 쓰지 않았지만 cURL을 사용하는 경우 보안 관점에서 요청 대상을 whitelist에 등록해야합니다.
모든 노드에서이 대응이 필요하기 때문에 약간 어색합니다. 참조에 whitelist를 만드는 방법도 쓰여 있으므로 참고하십시오
(배포하는 구조 만들어서, 친숙한 whitelist를 모든 서버에 전개한다고 하면 즐겁게)

좋은 웹페이지 즐겨찾기