首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsonapi-resources;错误的自我链接

jsonapi-resources;错误的自我链接
EN

Stack Overflow用户
提问于 2016-10-05 14:26:20
回答 1查看 538关注 0票数 1

我配置了json-resouce api。但是json-resource-api生成的自身链接是错误的。

代码似乎检查了资源类的模块层次结构,完全忽略了rails是如何生成路由的。

routes.rb

代码语言:javascript
复制
require 'api_constraints'

Rails.application.routes.draw do
  namespace :api, defaults: { format: :json }, constraints: { subdomain: 'api' }, path: '/'  do
    scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
      # resources :subscriptions, only: [:index, :new, :create]
      # jsonapi_resources :subscriptions, only: [:index, :new, :create]
      jsonapi_resources :subscriptions
    end
  end

资源/api/V1/subscription_recource.rb

代码语言:javascript
复制
class Api::V1::SubscriptionResource < JSONAPI::Resource
   attributes :id, :third-service_id, :created_at, :updated_at
   model_name 'Subscription'

   # def custom_links(options)
   #  {self: nil}
   # end
end

我得到的是=> http://api.localhost.local:3000/api/v1/subscriptions/1,但它应该是http://api.localhost.local:3000/subscriptions/1

我该如何解决这个问题呢?

更新

rake routes

代码语言:javascript
复制
[DUPLICATE ATTRIBUTE] `id` has already been defined in SubscriptionResource.
              Prefix Verb   URI Pattern                  Controller#Action
api_v1_subscriptions GET    /subscriptions(.:format)     api/v1/subscriptions#index {:format=>:json, :subdomain=>"api"}
                     POST   /subscriptions(.:format)     api/v1/subscriptions#create {:format=>:json, :subdomain=>"api"}
 api_v1_subscription GET    /subscriptions/:id(.:format) api/v1/subscriptions#show {:format=>:json, :subdomain=>"api"}
                     PATCH  /subscriptions/:id(.:format) api/v1/subscriptions#update {:format=>:json, :subdomain=>"api"}
                     PUT    /subscriptions/:id(.:format) api/v1/subscriptions#update {:format=>:json, :subdomain=>"api"}
                     DELETE /subscriptions/:id(.:format) api/v1/subscriptions#destroy {:format=>:json, :subdomain=>"api"}
        stripe_event        /stripe-events               StripeEvent::Engine

UPDATE2

这个问题与可以应用的github.com/cerebris/jsonapi-resources/issues/591 Monkey Pack完全相同,但它有一点风险。现在( 2016年10月5日),我找不到任何其他方法

代码语言:javascript
复制
  namespace :api do
    namespace :v1 do
      jsonapi_resources :subscriptions
    end
  end
EN

回答 1

Stack Overflow用户

发布于 2016-10-05 15:14:34

你可以尝试一下:

代码语言:javascript
复制
namespace :api, defaults: { format: :json }, constraints: { subdomain: 'api' }, path: "" do
  namespace :v1, path: "" do
    jsonapi_resources :subscriptions
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39866810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档