mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-04 04:04:36 +08:00
Refactor JSON API mime type registration [SCI-2687]
This commit is contained in:
parent
490376513b
commit
5488fc66fc
8 changed files with 18 additions and 14 deletions
|
@ -5,12 +5,12 @@ module Api
|
|||
class BaseController < ApiController
|
||||
rescue_from ActionController::ParameterMissing do |e|
|
||||
logger.error e.message
|
||||
render json: {}, status: :bad_request
|
||||
render jsonapi: {}, status: :bad_request
|
||||
end
|
||||
|
||||
rescue_from ActiveRecord::RecordNotFound do |e|
|
||||
logger.error e.message
|
||||
render json: {}, status: :not_found
|
||||
render jsonapi: {}, status: :not_found
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,18 +9,18 @@ module Api
|
|||
def index
|
||||
inventories =
|
||||
@team.repositories.page(params[:page]).per(params[:page_size])
|
||||
render json: inventories, each_serializer: InventorySerializer
|
||||
render jsonapi: inventories, each_serializer: InventorySerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render json: @inventory, serializer: InventorySerializer
|
||||
render jsonapi: @inventory, serializer: InventorySerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
return render json: {}, status: :forbidden unless can_read_team?(@team)
|
||||
return render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_inventory
|
||||
|
|
|
@ -15,7 +15,7 @@ module Api
|
|||
repository_cells: Extends::REPOSITORY_SEARCH_INCLUDES
|
||||
).page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
render json: items,
|
||||
render jsonapi: items,
|
||||
each_serializer: InventoryItemSerializer,
|
||||
include: :inventory_cells
|
||||
end
|
||||
|
@ -43,7 +43,7 @@ module Api
|
|||
else
|
||||
item = @inventory.repository_rows.create!(attributes)
|
||||
end
|
||||
render json: item,
|
||||
render jsonapi: item,
|
||||
serializer: InventoryItemSerializer,
|
||||
include: :inventory_cells,
|
||||
status: :created
|
||||
|
@ -53,7 +53,7 @@ module Api
|
|||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
return render json: {}, status: :forbidden unless can_read_team?(@team)
|
||||
return render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_inventory
|
||||
|
|
|
@ -5,18 +5,18 @@ module Api
|
|||
|
||||
def index
|
||||
teams = current_user.teams.page(params[:page]).per(params[:page_size])
|
||||
render json: teams, each_serializer: TeamSerializer
|
||||
render jsonapi: teams, each_serializer: TeamSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render json: @team, serializer: TeamSerializer
|
||||
render jsonapi: @team, serializer: TeamSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:id))
|
||||
return render json: {}, status: :forbidden unless can_read_team?(@team)
|
||||
return render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'active_model_serializers/register_jsonapi_renderer'
|
||||
|
||||
ActiveModelSerializers.config.adapter = :json_api
|
||||
ActiveModelSerializers.config.key_transform = :unaltered
|
||||
|
|
|
@ -2,4 +2,3 @@
|
|||
|
||||
# Add new mime types for use in respond_to blocks:
|
||||
# Mime::Type.register "text/richtext", :rtf
|
||||
Mime::Type.register 'application/vnd.api+json', :json
|
||||
|
|
|
@ -545,7 +545,10 @@ Rails.application.routes.draw do
|
|||
resources :teams, only: %i(index show) do
|
||||
resources :inventories, only: %i(index show) do
|
||||
get 'columns', to: 'inventory_columns#index'
|
||||
resources :inventory_items, only: %i(index create), path: 'items'
|
||||
resources :inventory_items,
|
||||
only: %i(index create),
|
||||
path: 'items',
|
||||
as: :items
|
||||
end
|
||||
end
|
||||
resources :users, only: %i(show) do
|
||||
|
|
|
@ -75,7 +75,7 @@ RSpec.describe 'Api::V1::InventoryItemsController', type: :request do
|
|||
get api_v1_team_inventory_items_path(
|
||||
team_id: @teams.first.id,
|
||||
inventory_id: @teams.first.repositories.first.id
|
||||
), params: { page_size: 100 }, headers: @valid_headers
|
||||
), params: { page: { size: 100 } }, headers: @valid_headers
|
||||
expect { hash_body = json }.not_to raise_exception
|
||||
expect(hash_body[:data]).to match(
|
||||
ActiveModelSerializers::SerializableResource
|
||||
|
|
Loading…
Add table
Reference in a new issue