REST API를 생성하고 사용하는 것에 대한 많은 게시물을 읽었지만 단일 앱에서이를 수행하는 방법에 대한 유용한 문서를 찾지 못했습니다.Rails API 및 동일한 애플리케이션에서 사용하기
저는 Rails에서 완성 된 MVC 애플리케이션을 사용 했었지만 REST API를 사용하여 다른 개발을위한 데이터를 제공하기 위해이 애플리케이션을 변경하기로 결정했지만 실제로 어떻게해야하는지 잘 모릅니다. 우리가 한 것은 내부에 API 컨트롤러가있는 api/v1/폴더 구조를 만드는 것입니다.
우리는
테스트에 매우 간단한 컨트롤러가 : 나는 서버 및 액세스 예상대로 작동 http://localhost:3000/api/v1/products/list를 시작하면namespace :api do
namespace :v1 do
scope '/products' do
get '/list' => 'products#list'
end
end
end
: 내 노선에서
class Api::V1::ProductsController < ApplicationController
def list
@products = Product.limit(100)
render json: @products, status: 200
end
end
내가 다음이 파일. 하여 다음 사항
class ProductsController < ApplicationController
include HTTParty
base_uri "http://1ocalhost:3000/api/v1/products"
format :json
def index
@products = self.class.get("/list?category_id=22"))
end
end
내가 그 길을 얻으려면 시도가 표시
그러나 지금, 나는 동일한 응용 프로그램에서 소비하기 위해 노력하고있어, 그래서 나는 다음 코드를 사용하여 다른 ProductsController가있다 서버 콘솔 :
Started GET "/" for 127.0.0.1 at 2017-05-08 11:58:30 -0400
Processing by ProductsController#index as HTML
Started GET "/api/v1/products/list?category_id=22" for 127.0.0.1 at 2017-05-08 11:58:31 -0400
Completed 500 Internal Server Error in 120213ms (ActiveRecord: 2.9ms)
Net::ReadTimeout (Net::ReadTimeout):
그러나 오류가 발생하면 요청이 백그라운드에서 올바르게 수행됩니다.
이것이 올바른 접근 방법인지 먼저 알고 싶습니다. 둘째, 동일한 서버에 있고 이미 API를 얻는 것으로 테스트 한 경우 시간 초과가 발생하는 이유는 무엇입니까?
미리 감사드립니다.
답장을 보내 주셔서 감사합니다.하지만 그 오류가 나타나는 이유는 무엇입니까? 나는 여전히 HTTP 요청을하지 않고 그 함수를 호출하는 방법을 알 필요가있다. (여전히 REST API가 필요하다.) – Kunstmann
@Kunstmann : 어떤 기능이 필요합니까? 나머지 API 끝점? http 호출을 통해서만. 대답의 마지막 부분을 확인하십시오, 그것은 당신을 도울 제안이 포함되어 있습니다. –