应用程序非常简单。我正在使用带有 postgres 的 rails-api gem 来生成 JSON 数据,使用 Angular 将其调用到前端。我已从控制器中移除 CSRF 保护并将其设置为:null_session。
这是控制器的基本 crud 功能:
class EngineersController < ApplicationController
# GET /engineers
# GET /engineers.json
def index
@engineers = Engineer.all
render json: @engineers
end
# GET /engineers/1
# GET /engineers/1.json
def show
@engineer = Engineer.find(params[:id])
render json: @engineer
end
# POST /engineers
# POST /engineers.json
def create
@engineer = Engineer.new(engineer_params)
if @engineer.save
render json: @engineer, status: :created, location: @engineer
else
render json: @engineer.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /engineers/1
# PATCH/PUT /engineers/1.json
def update
@engineer = Engineer.find(params[:id])
if @engineer.update(engineer_params)
head :no_content
else
render json: @engineer.errors, status: :unprocessable_entity
end
end
# DELETE /engineers/1
# DELETE /engineers/1.json
def destroy
@engineer = Engineer.find(params[:id])
@engineer.destroy
head :no_content
end
private
def engineer_params
params.require(:engineer).permit(:first_name, :last_name)
end
end
这只是使用 rails api gem 定义的基本 crud 功能,并将视图呈现为带括号的 JSON 对象。
这是应用程序控制器
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :null_session
def index
end
end
Index 被定义为允许 Angular 使用 ui-view 渲染页面,因此它是单个实际视图。该功能运行良好,ng-repeat 用于循环访问来自 postgres 的 json,到达 localhost:8080/api/engineers 的端点,并且可以读取、添加和销毁内容。
问题:无法通过邮递员访问 api,这意味着它无法接受来自应用程序外部的 JSON 数据。我想让人们点击 api 并从应用程序外部对其进行更新,或者简单地了解它为什么不起作用。
它与标头 Content-Type application/json 一起发送。
相关服务器日志
Error occurred while parsing request parameters.
Contents:
{first_name: "Samueeeel", last_name: "GRIMMMMES"}
ActionDispatch::ParamsParser::ParseError (795: unexpected token at '{first_name:
"Samueeeel", last_name: "GRIMMMMES"}'):