JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Links broken when used with `scope module:` routes
Personne n'a encore pris cette issue.
- Langage dominant
- Ruby
- Étoiles
- 2.3k
- Forks
- 546
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Hi,
we use a version parameter inside of the Accept header to be able to switch Api versions. The different versions are grouped in modules. And to remove these modules as namespaces from the generated URLs we use scope module:. This works great but the problem ist that the generated links inside a response still include the module.
The code just checks the module hierarchy of the resource class and completely ignores how rails generates the routes. (See: https://github.com/cerebris/jsonapi-resources/blob/master/lib/jsonapi/link_builder.rb#L102).
Also see #361 for a similar problem.
As a workaround we monkey patch the formatted_module_path_from_class method to return the correct path \api\. But that is not an ideal solution.
An example route file:
namespace :api do
scope module: :v1, constraint: ApiConstraint.new(version: 1) do
jsonapi_resources :my_resource
end
end
And an example resource:
module Api
module V1
class MyResource < JSONAPI::Resource
[...]
end
end
end
So Rails generates routes like: /api/my-resource
But the generated links look like this: /api/v1/my-resource
Sascha
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par lib/jsonapi/link_builder.rb#L102 et comparez sa gestion des chemins de modules avec les routes Rails présentées dans l’issue. Reproduisez l’exemple Api/V1/MyResource et consultez #361 pour le contexte associé. C’est terminé lorsque les liens de réponse utilisent /api/my-resource plutôt que /api/v1/my-resource lorsque scope module: supprime le namespace.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rails, ruby
- Domaine
- api, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 42/100