A Programming Language to make API's !!
Explore the docs »
Report Bug
.
Request Feature
- About the Project
- Built With
- Getting Started
- Usage
- Packages
- Making yourown packages
- Roadmap
- Contributing
- License
- Authors
This language was made for making API's great ease and more efficiency.
The language connects each API endpoint to a specific program/command, in case you want to write the code for the endpoint '/home' in python and '/generate' in Cpp - this can be done.
The language have packages for multiple languages for adapting april to the wanted language (some packages are made by the community too!!) . In case you dont find the required package for utilizing april in your wanted language - don't worry its easy to make a package for your own.
- Written in python3
- Makes use of FASTAPI
- Easy install
- Simple
- Efficient
- Inbuild ratelimiting features (if req)
- Auto-Generated API Docs (if req)
- Banned IPs
- Disallow Private IPs (if req)
- Cross platform
- Python3
- Pip3
- Redis server
WIndows :
pip install aprillang
Linux / MacOs:
pip3 install aprillang
Get the list of allowed commands
april -h
Get info of the language
april -a
Compile an .apl file (april file):
- This converts the april code to python3 code
- Compiled file is saved as filename without extention apl + '_apl.py'
april -c file.apl
Run an .apl file (start the API server):
- Format for the command is - april -r host:port
april -r file.apl 0.0.0.0:8080
Get the version of april:
april -v
Language | Link | Creator | Info |
---|---|---|---|
Python | Link | merwin-asm | Link |
Lua | Link | merwin-asm | Link |
JS | Link | axorax | Link |
TS | Link | merwin-asm | Link |
Go | Link | merwin-asm | Link |
Rust | Link | merwin-asm | Link |
PHP | Link | merwin-asm | Link |
Dart | Link | merwin-asm | Link |
Ruby | Link | merwin-asm | Link |
- The packages are used to connect the april program and the program dedicated to the endpoint.
- When the program pointed to the endpoint is called the program is suplied with a call ID in the form of commandline argument (last argument). The program can access details related to the request in the json file "." + call ID + ".input". And the output of the program can be put in to the json file "." + call ID + ".output".
- Json file
- Filename : "." + call ID + ".input"
- Contains information about the request ,
{ "request" : dict containing info of the request, "input" : {"varible_name_in_the_url" : "value", ....} }
- The 'request' dict have all the same keys as in starlette.requests
- Json file
- Filename : "." + call ID + ".output"
- Should contain information about the response ,
{
"headers" : <headers for the response>,
"status" : <status code>,
"output" : "the data to be send out to the user"
}
- The output and input files automatically gets deleted when the data in the output file is gained.
For support, join our discord server https://discord.gg/PXMSPJXhXd
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- If you have suggestions for adding or removing projects, feel free to open an issue to discuss it, or directly create a pull request after you edit the README.md file with necessary changes.
- Please make sure you check your spelling and grammar.
- Create individual PR for each suggestion.
- Please also read through the Code Of Conduct before posting your first idea as well.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
- Merwin - Comp Sci Student - Merwin - Main programmer