In order to provide public interfaces, we are using RESTful Web Services which are based on the REST architecture. These are light-weight, scalable and stateless web services; where the context is maintained by the client and not by the server. These allow you to define APIs with well-define interfaces, which can be shared with anyone publicly, allowing for direct access to the resources.
A Spring based Web App which works using RESTful Web Services. This application will have the following features:
- Following MVC by using Spring MVC.
- Using RESTful webservices(e.g. for file upload use /project/file/upload)
- Authenticatin (login/logout) and Authorize the user using Spring Security.
- CSRF protection
- Allow file sharing between users
- In file upload, when the server receives file, it should divide the file in 5 parts and store these parts and their metadata.
- Provide the user with a unique URL for the resource that can be shared with other users.
- A user can download a file by using the unique URL provided by the uploader.
- In file download the server will first combine the chunks of file and then send the combined single file as a response to the user request.
- Communication will be done using a standard protocol like JSON, XML etc
- Allowing sharing of resources via public links
- Using Hibernate for managing the database
- Loging all activities