Originally published on strongloop.com
The whole world has been through a lot in the past month. The LoopBack team hopes that everyone stays safe and gets through this together.
Let's check out the work we did in March:
- Migration Guide
- From Model to REST API
- More Usage Scenarios
- Miscellaneous
- Documentation Enhancement
- Community Contribution
Migration Guide
As LoopBack 3 will go end of life at the end of 2020, we've been focusing on the migration guide for the past months. Here is the content we added in March to help LB3 users adopt LoopBack 4:
Migrating Built-in Authentication
In LoopBack 3, the authentication system is a token-based one and has built-in models involved in the mechanism. In LB4, we built a more flexible authentication system that is compatible with different authentication strategies. Even though there are lots of differences, the newly created access control migration example explores how to migrate and build an equivalent LoopBack 3 authentication system in LoopBack 4 with detailed steps. The tutorial includes two main parts:
- How to migrate the LoopBack 3 User model's definition and its persistence and login endpoint.
- How to secure endpoints using a token based authentication system and enable the authorize dialog in the API explorer like what we have in LoopBack 3.
The tutorial also uses the handy LB4 CLI to help LB3 users to get familiar with LB4 terms. Read the migration-authentication tutorial to learn about the details.
Features Not Planned for LoopBack 4
Besides migrating artifacts from LB3, there are several features/components we no longer support anymore in LB4. They are listed in the page LoopBack 3 features not planned in LoopBack 4. We also provide workarounds for these features if users would like to continue using them in LB4.
From Model to REST API
The story From Model to REST API with no custom repository/controller epic is almost done! In the past few months, we created the @loopback/rest-crud
package, as well as the the ModelApiBooter
booter. And this month, we built the CLI command lb4 rest-crud
. To glue these pieces together, we added an example and documentation to help you pick up this convenience tool. Details are listed below. We will have a blog post in the near future.
CLI Command
In order to make it easier for users to use this feature, we've added a CLI command to simplify the process. If you have model classes and a valid(persisted) datasource, the following command will generate model endpoints for you:
lb4 rest-crud
Example Application
We've added a new rest-crud
example which creates the Todo
example without the need to define a repository or controller for the Todo model. By loading the CrudRestComponent
, it demonstrates how to use the default CRUD REST repository and controller with a single model class , datasource, and configuration. The example can be downloaded by running:
lb4 example rest-crud
You can find more information on how to use the command in the REST CRUD generator documentation.
Documentation
Now that most of the epic is completed, we've added documentation explaining how to use the feature and the configuration options that come with it. Additionally, we also added documentation on extending the @loopback/model-api-builder
package to create your own custom model API builders; similar to @loopback/rest-crud
's CrudRestApiBuilder
.
More Usage Scenarios
We've been adding more examples to show what you can build with, and how you can configure a LoopBack 4 app. One of our favorite examples is the Shopping App. It shows how you can integrate LB4 APIs with a simple front-end design to build a site. Besides the rest-crud
example mentioned above, we added more examples to show various LoopBack 4 features.
Validation Example
LB4 allows you to add validations at three different layers: REST, controller, and ORM. The newly added documentation Validation explains these three different types of validations. We added a corresponding example Validation Example to our Examples list demonstrating how to add and make use of different kinds of validations in a LoopBack 4 application.
File Upload and Download Example
Uploading/downloading files is a common requirement for API applications. The documentation for Upload and download files shows the code snippets to create artifacts such as controllers and UI to achieve such a requirement. A fully-functional example is available at File Transfer Example.
Documentation Enhancement
We made some changes in the layout design of the website. Hope you like the new look!
Request Response Cycle
To help users have a better understanding of all the components involved in the request-response handling process, in the Request-Response cycle document, we walk through the path taken by a request to see how it makes its way through the various parts of the framework to return a result. In the near future, we will also add documentation in the migration guide to explain the differences of the request-response cycle between LB3 and LB4. See the GH story Migration Guide: Request-response cycle for more details.
CHANGELOG Docs
We made the CHANGELOG easier to find on our site. It is available in the section CHANGELOG. We hope it helps developers to check out the changes of different packages for each release.
Miscellaneous
User Testimonials
We're glad to see a growing number of user testimonials. We refactored it in a new page. Check out the what our users say section. Let us know if you would like to tell us about your LoopBack usage!
IBM i Connector
The IBM Db2 for i connector was added to the connector list. You can now conveniently create an IBM Db2 for i datasource using our CLI. See the Db2 for i connector page for more details.
Newly Added Extensions
Here are the extensions we added to the framework:
The IBM API Connect OpenAPI enhancer @loopback/apiconnect extension was added to extend LoopBack with the ability to integrate with IBM API Connect.
An experimental extension @loopback/cron
was added. With it, LB4 apps can be integrated with Cron to schedule jobs using cron
based schedules.
Extracting JWT Component
After creating the demo for JWT authentication in loopback4-example-shopping and applying a similar system in loopback-example-access-control, we think it's time to extract the JWT authentication system into a separate component. This will benefit users who want to quickly mount a prototype token based authentication module to their application. As the first step, we extracted the JWT strategies, the token, and user services into a local module under components/jwt-authentication. Next we will move it to a standalone extension package. Feel free to join the discussion in GH story Extract the jwt authentication to an extension module.
Supporting Type Any
Model property of type any
is now supported. The corresponding OpenAPI and JSON schema is {}
or true
(according to the draft JSON schema standard). If your model property allows arbitrary values, now you can define it as:
class MyModel extends Entity {
// ...other code
@property({
// specify the type name here as 'any'
type: 'any'
})
// use `any` as its TypeScript type
// eslint-disable-next-line @typescript-eslint/no-explicit-any
anyProperty: any
}
Bug fixes
We fixed a bug in module
@loopback-ibmdb
where a put requestPUT /Model/{instanceId}
now operates correctly. The fix trickles down into any LoopBack connector with a dependency on@loopback-ibmdb
like@loopback-connector-db2
and@loopback-connector-dashdb
, for example.We fixed a bug in connector
@loopback-connector-mssql
which was causing permission problems during installation on Windows. Some extra folders ended up in the package tgz file, and this was causing the problem. The fix went out for several LoopBack connectors: MSSQL, DB2, dashDB, Cloudant, MongoDb, MySQL, Oracle, PostgreSQL, and Redis KeyValue.
Community Contribution
Our community maintainers and users have been very helpful with building a better LoopBack 4, we really appreciate all the help! Here are the highlights this month:
Enable Authentication Strategies to Contribute OASEnhancer
The community maintainer dougal83
improved the authentication strategies AuthenticationStrategy
so that it can be bound with the OAS enhancer extension point via a binding key instead of a constant.
Japanese Translation for LB4
The community user saotak
added several LB4 pages in Japanese. See the site. We need your help to have more translations for the LB4 documentations! The instructions can be found in the page Translation.
Call to Action
In 2020, we look forward to helping you and seeing you around! LoopBack's success depends on you. We appreciate your continuous support and engagement to make LoopBack even better and meaningful for your API creation experience. Here's how you can join us and help the project:
- Report issues.
- Contribute code and documentation.
- Open a pull request on one of our "good first issues".
- Join our user group.