Comments (7)
I remember reading somewhere about how they were trying to switch from using incremental integers as primary keys to using the slugs themselves (though that might have just been for users? Still seems like a bad idea)
I think exposing the numeric anime ID to the outside world via the API is the best and easiest solution — it should be just a single line in the API code to expose the Model's ID field. No harm, as long as we (API clients) don't expose the Anime ID to the end-user: that's what the slug is for.
from kitsu-tools.
I will definitely be giving this one some thought to decide what to do, probably next week since I have finals going on right now.
from kitsu-tools.
Good luck with your finals! I'll write down some more thoughts on this in the meantime.
The first and the obvious step to resolve this issue is to expose the IDs in the following fashion:
def present_anime(anime)
{
id: anime.id,
slug: anime.slug,
(...)
}
end
This is compatible with APIv1. But it'll break applications that use APIv2, as they will be expecting id: anime.slug
. The change should be announced beforehand so that developers can modify their applications, even though APIv2 is not officially released.
The second step is to decide on whether to use /anime/{id}
or /anime/{slug}
. Continuing to use slugs as the only parameter makes it obligatory for API users to store both IDs and slugs for most purposes. For instance, if I wanted to keep a list of all anime in Spring 2014 season, I'd have to do this:
[
{
"id": 7864,
"slug": "date-a-live-ii"
},
{
"id": 7880,
"slug": "no-game-no-life"
},
{
"id": 8052,
"slug": "black-bullet"
},
(...)
]
...where I should be able to do this:
[7864, 7880, 8052, (...)]
And then there's this thing that I learned about yesterday. Apparently the API allows both {id}
and {slug}
at the moment. This has the overlap issue with 100% and Fullmetal Alchemist, which can be resolved by eliminating numeric slugs. Looking through this page, I think the only offenders are 100% and 663114, and our chances of getting new anime with numeric titles are rather slim. But still, we better make sure no numeric slugs will be generated in the future.
from kitsu-tools.
Hey @vikhyat, were you able to give this some thought? Should I give it a shot and send you a pull request?
from kitsu-tools.
Hey, sorry for not replying earlier.
I think the changes you propose ({id: anime.id, slug: anime.slug} in both APIv1 and APIv2) are the best way to proceed. If you can send a PR for this change that would be greatly appreciated. 😄
Though it is compatible with APIv1 I would still prefer to announce the change and give people some time to update applications in the off-chance the change breaks anything just to be on the safe side. Since this is highly unlikely to break anything about a weeks notice maybe.
It also makes sense to stop generating purely numeric slugs since that would allow fully supporting both lookup by ID and slug. However that is a more substantial change and I've created #67 to track it.
from kitsu-tools.
This issue was solved by #71, right? Should it be closed?
from kitsu-tools.
All right, I'm closing this one. The only remaining issue is described at #67, which is still open.
from kitsu-tools.
Related Issues (20)
- How to access dashboard? What is the url? HOT 4
- Unable to login: forums.hummingbird.me HOT 1
- Authentication endpoint returns error 500 HOT 1
- 406 error HOT 1
- Unable to find a converter HOT 1
- I can't filter animes and sort by favoritesCount using API HOT 5
- Unable to seed data for local development
- Client doesn't access to the database with clean install HOT 2
- Suggestion: Rating design HOT 3
- How to deploy at Ubuntu Server and can access via domain ? HOT 1
- Error 502 when running localhost:32769 HOT 10
- Edit Library Entry buttons off-screen in firefox HOT 1
- Number of data and included entries mismatch
- Update bad urls on README & CONTRIBUTING HOT 3
- Library sorting parameters inconsistently applied on page load HOT 3
- Override System Styles
- Add Telegram to Profile Links HOT 1
- Character Page Links HOT 1
- Syncronization with MAL not working HOT 5
- Bad API url on README HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kitsu-tools.