[LLVMdev] Proposal: REST and Ajax in LNT

Chris Matthews chris.matthews at apple.com
Tue Jun 30 14:10:18 PDT 2015


That is a good question.

I think the API should live outside the current url namesapce, but have a similar schema (maybe /api/database/resource).  Where it makes sense, lets match the url scheme for the web interface.

I think for non-web clients, they probably want basically JSONed versions of pretty much what is in the interface now (at least until they know better).  The use cases I have seen are writing scripts to pull data for custom reporting dashboards, or pulling data into iPython Notebook.

I think for Ajaxing the front end, we are going to want more DB like resources, probably with query parameters.

My current motivation is getting access to the FieldChange database entries, to dynamically render them in a new interface.  I would want FieldChanges + URI to anything they link to, I would also like to be able to limit/filter the queries and paginate the results.  I also want to be able to construct a graph interface where data sets can be dynamically added and removed, that would be collecting sample sets, + exploring run machine data. For this in envisioned /api/database/FieldChanges with url or post parameters to set limits and filters.



> On Jun 30, 2015, at 1:29 PM, Kristof Beyls <kristof.beyls at arm.com> wrote:
> 
> This sounds very interesting .
>  
> I’m all for not reinventing the wheel. I don’t have experience with frameworks to implement REST interfaces so can’t comment on which one is best suited for LNT.
>  
> Just a few questions off the top of my head:
> Do you already have ideas for what the REST API roughly will look like?
> Very close to the database structure, or something slightly higher-level?
> Should the current existing URL scheme be extended to a full REST API; or do you think it’s best for the REST API to live in a separate “namespace”?
>  
> Thanks!
>  
> Kristof
>  
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Chris Matthews
> Sent: 30 June 2015 19:53
> To: LLVM Developers Mailing List
> Subject: [LLVMdev] Proposal: REST and Ajax in LNT
>  
> I think it would be super useful to give LNT a RESTful interface.  As LNT grows, it would be nice to be able to update some of the pages with Ajax(or json).  Especially for pages with long load times, it makes sense to be able to speed up load times, by fetching the data after page load. It would also allow us to build more dynamic pages, and allow non-web clients better structured access to LNT information.
>  
> We have been doing this to a degree already by adding &json=True parameters to some of the pages.  This approach is ad-hoc, serialization and exploitability have been a big pain. I think it is time to formalize the non-web interface, and use some technology to make it as rich and useful as possible.
>  
> Since we are not in the business of reinventing web technologies, I think we should use one of the preexisting flask frameworks for this.  I have experimented with two: Eve + eve-sqlalchmey and flask-RESTful.
>  
> http://python-eve.org <https://urldefense.proofpoint.com/v2/url?u=http-3A__python-2Deve.org&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=2w-zKuHO6XKGe45Mp98iJPvAYkGZV_1z40LUQrrC8GY&s=m3f5xCrrNlH1r4TY3q-pzKYdpMp3dy4hzKs4REnVe0c&e=>
> https://flask-restful.readthedocs.org/en/0.3.3/ <https://urldefense.proofpoint.com/v2/url?u=https-3A__flask-2Drestful.readthedocs.org_en_0.3.3_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=2w-zKuHO6XKGe45Mp98iJPvAYkGZV_1z40LUQrrC8GY&s=6rrEYWcF4BibyeSK23X9xK_FXUfGlfwRY6zlb03TdC4&e=>
>  
> If anyone in the community has some ideas on this I’d love to hear them.  Thus far, I hacked on Eve for an afternoon and could not get it to understand LNTs (admittedly obscure) database structure. Flask-RESTful looked simple, but more work to build the actual interfaces, though it seems like it might be a more natural fit for LNTs URL schema.
>  
> If no one has any options, I will try and integrate flaskRESTful into LNT.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150630/be11b729/attachment.html>


More information about the llvm-dev mailing list