JSight API Go Library is a library that parses schemas written in JSight API language.
JSight API language — you have never designed API so fast. We mean it. Compare JSight API with Open API.
Supported standards: HTTP REST, JSON-RPC 2.0.
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.
The JSight API Go Library is currently used as part of the JSight Server and JSight Online Editor applications.
- Getting Started
- JSight API language
- Versioning
- Dependencies
- Testing
- Contributing
- Bugs and Feature Requests
- Support
- License
- Resources
- Partners
- Acknowledgments
- Go >= 1.18 — install.
Download the JSight API Go Library source code: |
|
Go to the repository folder: |
|
Install development dependencies: (Ensure |
|
Download all dependencies: |
|
Run automated tests. If the tests are successful, then everything is fine, and the library is working. |
|
Update test snapshots If you made some significant change which has huge impact on generated JSON schema snapshots inside |
|
⚠️ SUPPORT: If you have any problems while launching the JSight API Go Library, 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! |
|
JSight API Go Library releases are versioned according to the Semantic Versioning 2.0.0 standard.
{MAJOR version}.{MINOR version}.{PATCH version}
Releases are located in the branch main
, and are tagged with a version number, for example
v1.0.0
.
The JSight API Go Library release history can be seen here: https://github.com/jsightapi/jsight-api-core/releases.
The JSight API Go Library depends on the JSight Schema Go Library and several other libraries.
The complete list of JSight API Go Library dependencies is described in the file go.mod.
To run automated tests, run the following command in the repository root folder:
go test -cover ./...
To run only OpenAPI converter tests, do the following:
make oas_test
If the testing tool finds any errors in OpenAPI tests, it will create two temporal files
(.ACTUAL.json
and .EXPECTED.json
) right at the folder, where the test was failed. Compare these
two files with any diff tool to find the error.
After you fix the bug, run tests again, and these two files fill be automatically removed.
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 Server repo: https://github.com/jsightapi/jsight-server.
- 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-api-core/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,
- Dave Collins for his go-spew library,
- Stretchr company for Testify library,
- Patrick Mézard for his go-difflib library.
⭐ Star us on GitHub — it motivates us a lot! ⭐