Skip to main content

Developing Restful-API using JAX-RS

Web Services 

  • Services that are exposed to the Internet for programmatic access. 
  • Two main types of web services
    • REST (Representational State Transfer)
      • REST has no standard protocol (can use XML,JSON,etc)
    • SOAP
  • Web services use HTTP (Hyper Text Transfer Protocol) to send and receive messages.
  • To include service definitions that offered from Web Service: WSDL

URI

  • Two main types of URI
    • Resource Based URI
      • Every resource must be identified by a single URI 
      • Doesn't contain .do in URI ( /message/{message_Id})
    • Collection URI
      • return collection of instances
      • ex : /message/1/comments -> return all the comments relevant to message id=1
      • To create new resource you have to use collection URI

Filtering  

  • /messages?offset=30&limit=10 -> return 10 messages starting from message_Id=30

HTTP Methods 

  • Four main types of HTTP methods:
    • Get: To get the details of resource
    • Put: To update resources
    • Post: To create new resource
    • Delete: To delete the resource
  • Other HTTP methods: head, options
  • HTTP methods can be in two types
    • Idempotent: safely repeatable (put, get, delete)
    • Non-idempotent: can not safely repeatable (post)

Status Codes

  • Five main types of status code that indicate by first number of three digits
    • 1xx: Informational codes (acknowledgement/response)
    • 2xx: Success codes
    • 3xx: Redirection codes (ask clients do something)
    • 4xx: Client Error Codes
    • 5xx: Server errors

Hypermedia As The Engine Of Application State(HATEOAS)

  • Use to provide links to resources
  • rel: Describe the relationship to a current resource (What that link point to)

API Levels 

  • Three main types of API levels
    • Level1: Use resource based URI
    • Level2: Use HTTP methods
    • Level3: Use HATEOAS

Additional Information 

  • Hypertext: Text that contains links to other texts (hyperlinks)
  • Static web pages : Every resource has URI and specific HTML file
  • Jersey: Library that handles all the API functionalities in the deploying server (ex: tomcat)
  • Maven: Project management utility
    • Archetype: template (previously created projects)
    • Group id: Package id
    • Artifact Id: project name 

Implementing Messenger App Using Jax-RS

  • Create Maven project 
    • select archetype as Jersey-webapp
  • Crete tomcat server
  • Create resources
    • @Path(/messages): To choose class
    • @GET: Tell the relevant HTTP method
    • @produces(MediaType.TEXT_PLAIN): Tell the return type
    • @XmlRootElement: convert types to XML type
  • Create database class using hashmap
  • Include a variable in a path parameter
    • @Path("/{message_id}") : use curly braces
    • get this one as a variable to the method: use @PathParam
  • To get JSON type: uncomment dependencies in pom.xml file
  • For post requests
    • @consumes(MediaType.TEXT_PLAIN) : Tell the posting data type
  • Send Parameters
    • @QueryParam("year") : /messages?year=2015
      • Query param use? 
    • @MatrixParam("year"): /message;year=2015
      • Matrix param use;
    • @HeaderParam("year")
      • To get header values by their name
    • @CookieParam("year")
      • To get cookie values
    • @Context UriInfo uriinfo: To get all the information if you are not sure about values
      • To get all the necessary parameters (path, URL, query, cookies etc)
    • @BeanParam : @BeanParam BeanParam(class name) beanparam
      • Save other parameters in a class and access them using getters and setters
  • @XmlTransient: ignore the below data when you expose other data 
  • To change headers: use Response.created()
  • To create URI : use uriinfo.getAbsolutePathBuilder()
  • To handle the exception: use WebApplicationException

Comments

Popular posts from this blog

Object Oriented Programming (OOP)

Object Object is an entity that has state and behavior Class Collection of objects is known as class. There are four main types of OOP concepts Inheritance Object acquire all the properties and behavior of parent object Improve code re-usability Polymorphism One task is performed by different ways Use method overload and override Abstraction Hiding internal details and showing functionality Use abstract class and interfaces Encapsulation Binding code and data into a single unit

Maven

Maven is a software project management and comprehension tool, based on the concept of project object model. Maven Usages Build the code in the development environment (compile the source code, run the test cases and packaging the project) Project management tool Generate reports Dependency management Installation Steps You can install Maven by following below steps .  Manual Installation Download Maven binary file Create some environment variables M2_HOME = environment point to maven directory PATH = append Maven path until bin to path variable Using Ubuntu Terminal sudo apt-get install maven To check Maven is successfully installed, issue the following command mvn --version To create a Maven project using Terminal use following steps mkdir myApp cd myApp/ mvn archetype:generate : choose archetype for the project  groupId: org.amali.myProject (like package name) artifactId: MavenTestApp (like class name) The...

Model-View-Controller (MVC)

MVC(Model-View-Controller) is a software design pattern.It divided your applications into three components Model: Contain business rules and application Data View: Presentation layer (user interface) Controller: Handles the communication between view and model  Objectives of MVC Promote code usability Implement separation of concerns  Separate user interface and software logic Web Frameworks That Use MVC There are several web frameworks that use MVC design pattern.  Ruby On Rails (Ruby) Angular (JS) Django (Python) Express (JS) Flask (Python) Codeigniter (PHP) Simple UseCase for MVC In this use case scenario, Browser sends information that needs to create Employee Object, and Controller save that information in Model and Update the Employee View. Following Image shows the class diagram for above Scenario. Implementation:  https://github.com/kaosadi17/MVC