Rails를 사용하여 API에서 데이터 요청

3610 단어

아래 예제에서는 polygon.io API를 사용하겠습니다.



설치할 보석



보석 파일:

gem 'faraday'
gem 'json', '~> 2.5', '>= 2.5.1'
gem 'dotenv-rails', groups: [:development, :test]



실행하다:

bundle


API 요청을 위한 컨트롤러 및 뷰 생성




rails g resource stock




이제 /config/routes.rb를 열고 다음을 추가하십시오.




이 경로를 사용하여 API 요청을 만들고 동일한 경로의 브라우저에 응답을 표시합니다.

/app/views/stocks/search를 열고 다음으로 채웁니다.




그러면 Polygon API에서 가져올 수 있는 주식 데이터의 시세를 입력할 수 있는 양식이 제공됩니다. 그리고 if 문에는 컨트롤러에서 호출한 경우 API의 응답으로 설정된 응답 변수가 있습니다.

if params['stock']
  @response = Searchstock::Search.by_stock(params['stock'])
end


API 모듈 생성



이제 실제로 Searchstock에 API 요청을 하는 과정을 시작하겠습니다.
Faraday를 설치했지만 컨트롤러 내에서 직접 호출할 수는 없습니다.
/controller/concerns/searchstock.rb에 추가합니다. 폴더 이름을 변경하지 않도록 주의하십시오.

/concerns/searchstock.rb 안에 searchstock.rb를 만들겠습니다.

모듈 내부의 클래스와 클래스 내부의 메서드는 아무 이름이나 지정할 수 있습니다.

위의 코드에서 티커 매개변수와 함께 Searchstock::Search.by_stock 메서드를 호출하면 Searchstock에 대한 API 호출을 만들 수 있지만 ENV['API_KEY']는 어떻습니까?
ENV['API_KEY']를 Polygon의 실제 API 키로 대체할 수는 있지만 코드 내에 API 키를 남겨두는 것은 옳지 않습니다. 따라서 API 키를 환경 변수로 배치할 것입니다.
먼저 API 키를 로컬 머신에 환경 변수로 배치하겠습니다.
이를 위해 dotenv gem을 사용합니다.

Dotenv 레일 설치



애플리케이션의 Gemfile 맨 위에 다음 행을 추가하십시오.
gem 'dotenv-rails', 그룹: [:development, :test]
그런 다음 다음을 실행합니다.
묶음
이제 애플리케이션의 루트에 .env라는 파일을 추가합니다. 파일 이름을 변경하지 않도록 주의하십시오. 다음과 같이 첫 번째 줄에 API 키를 추가합니다.
API_KEY=your_api_key
your_api_key를 OpenWeather에서 제공한 실제 키로 바꿉니다.
작업을 커밋하려는 경우 git이 추적하지 않도록 .gitignore에 .env 파일을 추가합니다.

컨트롤러에서 API 호출



이제 마지막 부분으로 컨트롤러/app/controllers/stock_controller.rb의 검색 작업에 이것을 추가하십시오.

if params['stock']
  @response = Searchstock::Search.by_stock(params['stock'])
end


이전에 이름을 지정한 모듈, 클래스 및 함수의 이름이 일치하는지 확인하십시오.


결과 확인



이제 서버를 엽니다.
레일즈 서버
그리고 브라우저에서 http://localhost:3000/stocks/search을 방문하십시오.
응답을 보려면 티커를 검색하세요.

좋은 웹페이지 즐겨찾기