JSight Server is the core backend application of the JSight ecosystem providing the JSight Server API through which any client application can perform various tasks related to processing the JSight API language.
JSight API language – you've never designed API so fast. We mean it. Compare JSight with Open API.
Supported standards: HTTP REST, JSON-RPC 2.0.
The JSight Server API allows you to perform the following tasks:
- Parsing code in the JSight API language, checking JSight API syntax.
- Generating a JSON structure containing all information about this API in the JDoc Exchange Format (required for JSight Online Editor frontend).
- Converting JSight API to OpenAPI (YAML or JSON).
The following features are also planned in the near future:
- Support for other types of API: gRPC, Kafka, RabbitMQ, WebSocket.
- Converting from OpenAPI to JSight API.
- API documentation generation in MarkDown format.
- API documentation generation in PDF format.
- Generation of API server code stubs for different programming languages (Java, PHP, Go, Node.js, Python, C++ etc.).
- Generation of API clients for different programming languages (JavaScript, Java, PHP, Go, Python, C++ etc.).
- And many other features.
🔥 If you have any ideas or suggestions, please share with us:
- Email: [email protected]
- Telegram: @jsight_support
JSight Server is now actively used as part of the JSight Online Editor application.
- Getting Started (Installing)
- JSight API language
- Configuration
- JSight Server API
- Versioning
- Dependencies
- Testing
- Contributing
- Bugs and Feature Requests
- Support
- License
- Resources
- Partners
- Acknowledgments
Running Locally
- Go >= 1.17 — install.
Download the JSight Server source code: |
|
Go to the repository folder: |
|
Download all dependencies: |
|
Compile an executable binary: |
|
Start the server: |
|
Check that the JSight Server is running by running the following command: |
Linux:
Windows cmd:
Windows PowerShell:
|
If everything is fine, you should receive a json in response that looks something like this: |
|
For more information on configuring the JSight Server, see the Configuration.
⚠️ SUPPORT: If you have any problems while launching the JSight Server, do not hesitate to contact our support, we respond quickly:
Email: [email protected]
Telegram: https://t.me/jsight_support
Building and Running an Image Locally
Download the JSight Server source code: |
|
Go to the repository folder: |
|
Build and start JSight Server (on port 8080). |
|
Check that the JSight Server is running by running the following command: |
Linux:
Windows cmd:
Windows PowerShell:
|
If everything is fine, you should receive a json in response that looks something like this: |
|
For more information on configuring the JSight Server, see the Configuration.
⚠️ SUPPORT: If you have any problems while launching the JSight Server, do not hesitate to contact our support, we respond quickly:
Email: [email protected]
Telegram: https://t.me/jsight_support
The JSight API language allows you to specify REST and JSON-RPC APIs with incredible speed and convenience. More information can be found in the Quick Tutorial or in the language specification. Here we give examples of the same API described using JSight API and OpenAPI.
Example 1. The simplest
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
Pay attention to the main feature of the JSight API language. The basis for a data schema is an example of valid data. Additional data requirements are specified in C-like comments. This approach greatly simplifies the data schema and makes it intuitively clear. Practice shows that such schema is very simple to create, read and edit. Learn more about the JSight language: Quick Tutorial. ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 2: User Types
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
Pay attention to how convenient it is to work with user types in JSight API. The type name is simply inserted where the type should be in the data schema. Everything is the same as in conventional programming languages. More about user types: Quick Tutorial. Lesson 2. User types. ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 3: Schema
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
Details that are not obvious from the example of valid data are provided in small JSON objects in C-like comments. This approach allows you to write data schemas of any complexity, while keeping them compact and intuitive. More about JSight Schema: Quick Tutorial. Lesson 4. Schemas. ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 4. POST
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
Please note that the POST request and the three response options are written in a clear and concise manner. More about requests and responses: Quick Tutorial. Lesson 6. Requests and Responses. ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 5: Inheritance
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
This example shows how simple it is to inherit one type from another in JSight using the rule
Learn more: JSight Schema Specification. Rule "allOf". ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 6. Full-fledged CRUD API
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
A full-fledged CRUD API took only 25 lines. ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 7. Macros
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
Macros are a powerful feature of the JSight API language. It allows you to reuse parts of code as many times as you like. More about macros: Quick Tutorial. Magic directive MACRO. ⭐ Star us on GitHub — it motivates us a lot! |
|
Example 8: Large REST API
JSight API 0.3 | OpenAPI 3.0.1 (Swagger) |
---|---|
|
We did not describe this API in OpenAPI. It is too complicated and very long… ⭐ Star us on GitHub — it motivates us a lot! |
Example 9. JSON-RPC 2.0
JSight API 0.3 | OpenRPC 1.2.1 |
---|---|
The JSON-RPC API is as simple to describe as the REST API. More about JSON-RPC 2.0 support: Quick Tutorial. JSON-RPC 2.0 support. ⭐ Star us on GitHub — it motivates us a lot! |
|
You can configure the following application settings:
JSIGHT_SERVER_CORS
— Iftrue
, the server enables CORS headers, allowing Cross Origin requests to JSight Server. Iffalse
, CORS-headers are not sent, Cross Origin requests to JSight Server are forbidden.JSIGHT_SERVER_STATISTICS
— Iftrue
, then JSight Server will send statistical data to the statistics collection server. Iffalse
, statistics are not sent.⚠️ Do not turn on this mode unnecessarily!
Default parameter values:
JSIGHT_SERVER_CORS=false
,JSIGHT_SERVER_STATISTICS=false
.
If you need to change the default configuration, set the appropriate environment variables. For example, JSight Server can be run with the following command:
JSIGHT_SERVER_CORS=true JSIGHT_SERVER_STATISTICS=false ./jsight-server
When starting docker-compose.yml
you can specify the following parameters:
HOST_PORT
— port at which JSight Server will run.JSIGHT_SERVER_CORS
— Iftrue
, the server enables CORS headers, allowing Cross Origin requests to JSight Server. Iffalse
, CORS-headers are not sent, Cross Origin requests to JSight Server are forbidden.JSIGHT_SERVER_STATISTICS
— Iftrue
, then JSight Server will send statistical data to the statistics collection server. Iffalse
, statistics are not sent.⚠️ Do not turn on this mode unnecessarily!
Default parameter values:
JSIGHT_SERVER_CORS=false
,JSIGHT_SERVER_STATISTICS=false
.
An example of starting JSight Server with the configured parameters:
HOST_PORT=8095 JSIGHT_SERVER_CORS=true JSIGHT_SERVER_STATISTICS=false docker-compose -f docker-compose.yml up -d --build
JSight Server provides the JSight Server API at the specified
port (for example, at https://localhost:8080/
).
The JSight Server API specification is located in the file jsight-server-api.jst.
The JSight Server API adheres to the Semantic Versioning 2.0.0.
{MAJOR version}.{MINOR version}.{PATCH version}
The JSight Server API version is specified in the file
jsight-server-api.jst in the directive Version
.
The JSight Server release version consists of two numbers:
{release number}.{release fix number}
Version 3.2, for example, denotes release number 3, fix number 2.
Releases are located in the branch main
, and are tagged with a version number, for example
release-2.0
.
The JSight Server release history can be seen here: https://github.com/jsightapi/jsight-server/releases.
JSight Server depends on the following components:
These dependencies are described in the file go.mod.
Currently, JSight Server is a very simple application which is why it has no automated tests yet. However, the libraries used are fully covered by automated tests.
Contributing is more than just coding. You can help the project in many ways, and we will be very happy to accept your contribution to our project.
Details of how you can help the project are described in the CONTRIBUTING.md document.
Do you have a bug report or a feature request?
Please feel free to add a new issue or write to us in support:
- Email: [email protected]
- Telegram: @jsight_support
If something is unclear to you, please contact support; we try to respond within 24 hours. Moreover, it is critical for us to understand what is unclear from the first instance.
- Email: [email protected]
- Telegram: @jsight_support
This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.
- JSight Official Website: https://jsight.io.
- JSight API Language Quick Tutorial: https://jsight.io/docs/jsight-api-0-3-quick-tutorial.
- JSight API language specification on the official website: https://jsight.io/docs/jsight-api-0-3.
- JSight API language specification on GitHub: https://github.com/jsightapi/specification/tree/main/versions/JSight%20API.
- JSight Online Editor: https://editor.jsight.io.
- JSight Online Editor repo: https://github.com/jsightapi/online-editor-frontend.
- JSight blog: https://jsight.io/blog.
- Official Facebook page: https://www.facebook.com/jsightapi.
- Official Twitter: https://twitter.com/jsightapi.
- Official Linkedin: https://www.linkedin.com/company/jsightapi.
- All JSight repositories: https://github.com/jsightapi.
- GitHub discussions: https://github.com/jsightapi/jsight-server/discussions.
- We have successfully completed class #29 of the Alchemist Accelerator.
We sincerely thank all those without whom this project would not have been possible:
- Alchemist Accelerator,
- Lucas Jones for his reggen library,
- itchyny for his json2yaml library,
- Stretchr company for testify library,
⭐ Star us on GitHub — it motivates us a lot! ⭐