Package: jsonapi-simple
jsonapiA minimalistic JSON API framework in Python with support forgraphql-style queries.jsonapiis heavily inspired bygraphql, but aimed at a much simpler use case. The idea is to have a minimal framework for easily building JSON based APIs, that doesn't require any particular frontend technology. The design is inspired ingraphql's idea of a single fully customizable endpoint, but instead of defining a specific query language,jsonapiis entirely based on JSON both for the query and the response, requires much less boilerplate code, only works in Python 3, and of course, is much less battle-tested. If you findgraphqlamazing but would like to try a decaffeinated version that you can setup in 10 lines, then givejsonapia shot.InstalationThe easiest installation is throughpip. Unfortunately the cute namejsonapiwas taken already in PyPi, so the project is registered underjsonapi-simple.pip install jsonapi-simpleYou can also just clone and distribute with your project's source code:git clone https://github.com/apiad/jsonapi.gitHello worldTo illustrate the usage is best to start with an example. The main class injsonapiis (wait for it...)JsonApi, which defines all the available commands in the API as public methods:>>>fromjsonapiimportJsonApi>>>classHelloWorld(JsonApi):...defsay(self,message,args):...returnmessage.format(args)Afterwards, create an instance of this API and call it, passing along either a JSON-enconded string, or a pure Python dictionary, to query either methods or attributes:>>>api=HelloWorld()>>>api({"say":{"$message":"Hello{0}!","$args":"world"}}){'say':'Hello world!'}Moving onThere is more that can be done withjsonapi, read thedocumentationto learn more:Performstructured querieswith complex structure.Passargumentsto commands.Obtainaggregated datafrom collections.ManipulateJSON datawith an object-oriented syntax.Gettype conversionsautomatically for your API schema.ContributingContributions are highly appreciated. Just fork and submit a pull request. All contributors will be granted credit on the following list:Alejandro Piad (@apiad)ChangelogIn the roadmapAutomatic API documentation.v0.2.2Finally added to PyPi asjsonapi-simple.v0.2.1Support for typed arguments.v0.2.0Support for meta operators in dictionaries (_count,_items,_keys,_values).TheJsonObjconstructor now receives eitherstr,dictor a**kwargsmapping.v0.1.4Support for some meta operators for lists (_countand_items).v0.1.3Basic implementation ofJsonObjfor JSON manipulation.v0.1.2Suport for complex method arguments (parsed viaJsonObj).v0.1.1Suport for plain method arguments.v0.1Basic layout of the API.Simple attribute and method based navigation.Automatic serialization to a JSON compatible object.Basic documentation.ColaborationThis project is licensed MIT, so you know the drill. Fork, open a pull request, and make sure to have up-to-date tests with (ideally) a 100% coverage.MIT LicenseCopyright (c) 2018 Alejandro PiadPermission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.