0
我對Ruby on Rails非常陌生,在設計和實現REST API方面是全新的。我有一個運行,並試圖做一個簡單的發佈請求,通過curl保存在我的數據庫中的東西。Ruby on Rails - 測試REST API時發佈的請求被拒絕?
這裏是我的路線:
GET /api/v1/employees(.:format) api_employees#index
POST /api/v1/employees(.:format) api_employees#create
GET /api/v1/employees/:id(.:format) api_employees#show
PUT /api/v1/employees/:id(.:format) api_employees#update
GET /api/v1/employees/:id/addresses(.:format) api_addresses#index
POST /api/v1/employees/:id/addresses(.:format) api_addresses#create
GET /api/v1/employees/:id/addresses/:address_id(.:format) api_addresses#show
PUT /api/v1/employees/:id/addresses/:address_id(.:format) api_addresses#update
,這裏是我的api_employees控制器。我還沒有創建地址控制器,但我試圖發佈一個員工。
class ApiEmployeesController < BaseApiController
before_filter :find_employee, only: [:show, :update]
before_filter only: :create do
unless @json.has_key?('employee') && @json['employee']['address']
render nothing: true, status: :bad_request
end
end
before_filter only: :update do
unless @json.has_key?('employee')
render nothing: true, status: :bad_request
end
end
before_filter only: :create do
@employee = Employee.find_by_id(@json['employee']['id'])
end
def index
render json: Employee.all
end
def show
render json: @employee
end
def create
if @employee.present?
render nothing: true, status: :conflict
else
@employee = Employee.new
@employee.assign_attributes(@json['employee'])
if @employee.save
render json: @employee
else
render nothing: true, status: :bad_request
end
end
end
def update
@employee.assign_attributes(@json['employee'])
if @employee.save
render json: @employee
else
render nothing: true, status: :bad_request
end
end
private
def find_employee
@employee = Employee.find_by_id(params[:id])
render nothing: true, status: :not_found unless @employee.present?
end
end
我嘗試使用後:捲曲-H 「內容類型:應用程序/ JSON」 -X POST -d '{ 「員工」:{ 「地址」: 「123.123.123.123」}}' http://myapi.heroku.com/api/v1/employees
和我得到的迴應
<body>
<!-- This file lives in public/422.html -->
<div class="dialog">
<div>
<h1>The change you wanted was rejected.</h1>
<p>Maybe you tried to change something you didn't have access to.</p>
</div>
<p>If you are the application owner check the logs for more information.</p>
</div>
我需要以某種方式改變訪問?任何幫助深表感謝。