I’m trying to create a custom API on Discourse for a plugin I’m working on.
I haven’t any problem to create a POST request, but when I try to create one with GET, it all the time returns a 404 error page.
Here is my code.
after_initialize do
module ::MyApiComments
class Engine < ::Rails::Engine
engine_name "myapi_comments"
isolate_namespace MyApiComments
end
end
class MyApiComments::CommentsController < ::ApplicationController
def get_topic_comments
# Some stuff here
render :json => message, :status => 200
end
end
MyApiComments::Engine.routes.draw do
get '/myapi-t/:id' => 'comments#get_topic_comments'
end
Discourse::Application.routes.append do
mount ::MyApiComments::Engine, at: "/"
end
end
When I use post '/myapi-t/:id' => 'comments#get_topic_comments', all works fine. But I absolutely need to use a GET request and I can’t understand why it doesn’t works.
(by the way, I know there is already an API route to get topic posts, but I don’t use it for good reasons :))
Yeah, it seems it is a 200, not a 404 error page, sorry for mistake.
What I’m really getting is an HTML view with header content (logo, nav, etc.), but not a json string with what I asked for (using render :json).
A GET request which returns JSON, as I described on my first message :).
Make a POST requests returns JSON I asked for, the GET one returns HTML. That is my current problem.
Hmm, really nice thing to know :D.
I knew (I’m using it for other things) that the Discourse API needs to end by .json, but on a specific route that I declared myself… Is this documented somewhere?