Web API Server
Version: 2.05Description: Create Web API Server using B4X template
Template 1: MinimaList API Server.b4xtemplate
Depends on:
- WebApiUtils.b4xlib
- MinimaListUtils.b4xlib
Template 2: Web API Server.b4xtemplate
Depends on:
- WebApiUtils.b4xlib
- MiniORMUtils.b4xlib
Optional:
Add WebAPIController.jar and WebAPIController.xml to B4J Additional Library folder to generate Web and API Controllers.
For older version, see webapi-b4j (v1.16) https://www.b4x.com/android/forum/threads/web-api-template.133764/
GitHub: https://github.com/pyhoon/webapi-2-b4j
Tutorials:
- Getting Started
- Download File Example
- Vue 3 CRUD Example
- Using Web API Controller
- Using MinimaList Controller
- Using #Plural tag
Features
- Redesign Architecture
- The core handler - ApiHandler, acts like BaseController or Routes class
- ApiHandler routes the RequestURI to controllers e.g /web/api/v2/data
- HelpHandler (optional) generates API documentation for easy debugging without external tools or clients which embed tokens in request header. HelpHandler is now scanning through controllers class for APIs to list in the documentation instead of reading handlers from b4j project main module in version 1.x
- Web and API paths can be changed in config.ini
- Versioning can be enabled or disabled
- Simple JSON response (Map or List)
- Session can be toggled
- Cookies can be toggled
- Welcome message can be toggled
- One stop ConfigServer sub to control all the settings
- Default endpoint name is based on controller's name (e.g /web/api/v2/product for ProductController)
- Override endpoint name using #Plural (e.g /web/api/v2/products)
- Custom version name using #Version (e.g v2, live, demo, dev, staging)
- Description is set using #Desc (i.e no more using #Desc1, #Desc2 or Literals that was very confusing in version 1.x)
- API endpoint can be hidden using #Hide
- INTRODUCING: MinimaList -> store as Map/List. API server can run without database (or optionally persist as KeyValueStore).
Code Example
B4X:
Private Sub GetCategory (id As Long)
' #Plural = Categories
' #Version = v2
' #Desc = Get a Category by id
' #Elements = [":id"]
Dim M1 As Map = Main.CategoryList.Find(id)
If M1.Size > 0 Then
HRM.ResponseCode = 200
Else
HRM.ResponseCode = 404
End If
HRM.ResponseObject = M1
ReturnApiResponse
End Sub
What's New
Version: 2.05
- (new) MinimaList API Server (version 2.05) as a separate template
- (new) MiniORMUtils (version 1.07)
- (new) MinimaListUtils (version 1.02)
- (new) WebApiController (version 1.04)
- (new) Use a single public variable SimpleResponse instead of 3 different public variables.
- (update) HelpHandler - JavaScript files for search is no longer generated during compilation.
The files are now keep inside assets/js folder instead. SimpleResponse and standard JSON are supported.
Thanks to projects Ticketing Support System and Shao. - (update) Some JavaScript files have been renamed using period instead of dash.
- (new) Web Front-end with CRUD demo (similar to version 1)
- (new) B4X Web API Client (version 1.05) supported (note: set ConfigureResponse(False))
- (new) WebApiUtils.b4xlib (version 2.04) (Utility and WebUtils modules merged)
- (new) WebAPIController (version 1.03) is backed
- (new) MinimaListUtils.b4xlib (version 1.00)
- (new) Database support (tested with SQLite and MySQL)
- (new) Build Standalone Package supported
- (new) Additional library for jdbc connector is set by selecting a Build configuration during Debug
- (new) ConfigureServer subs are now enabled by passing Boolean value instead of commenting the line
- (new) Utilize B4J v10.00 Code Snippets feature
- (new) DatabaseConnector (for SQLite, MySQL, SQL Server, Firebird, PostgreSQL, DBF)
- (new) SeedData for MinimaList
- (new) ConfigureResponse added SimpleResponseDataKey (when SimpleResponseFormat = "Map", default is data)
- (new) JavaScript files for supporting SimpleResponseFormat
- (new) ReturnApiResponse sub added
- (fixed) ConfigureServer subs order changed
- (fixed) ConfigurePort
- (fixed) ConfigurePaths
- (fixed) ConfigureElements list element indices during Debug
- (fixed) ConfigureHandlers
- (fixed) ConfigureResponse added SimpleResponseFormat = "Auto"
- (removed) Timezone setting
- (removed) DataController class
- (removed) ReturnSimpleHttpResponse
- (removed) MinimaListController (version 1.05) -> succeeded by WebAPIController
- (updated) MinimaList subs are renamed
- (updated) ReturnHttpResponse
- (updated) All Controllers
- (updated) All Handlers
- (other) Clean up unused code and many other bugs fixes
To seed dummy data in MinimaList API Server, browse to:
http://127.0.0.1:19800/web/?seed=1
This project has been tested many many times. Please report bugs if you found any.
Special thanks to donors of this project:
Attachments
-
Web API Server (2.05).b4xtemplate442.2 KB · Views: 8
-
WebApiUtils.b4xlib9.7 KB · Views: 6
-
MiniORMUtils.b4xlib13.8 KB · Views: 4
-
WebApiController.jar1.5 KB · Views: 7
-
WebApiController.xml413 bytes · Views: 5
-
MinimaList API Server (2.05).b4xtemplate446.6 KB · Views: 4
-
MinimaListUtils.b4xlib6.2 KB · Views: 5
Last edited: