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

Sorting Algorithms

Bubble Sort Named as sinking sort. Compare each pair of the adjacent items and swap them if they are in the wrong order. Worst case and average case time complexity both O(n^2)  and best case time complexity is O(n).

Java- Interview

Here are some popular tips in Java General Question JVM - Java Virtual Machine. Used to execute byte code. Platform dependent (but byte code is platform independent) JRE- Java Run time Environment. It provides run time environment and it's the implementation of JVM. It contains libraries and files that need to execute JVM.   JDK- Java Development Kit. It contains JRE and development tools. Why java doesn't support pointers: It's insecure and complex to understand We can save java file with another name if class is not defined as public Java use camalCase notation for objects naming (ex: firstName) OOP Concepts Related  Aggregation: weak relationship (bike has an indicator) Composition:  strong relationship (bike has an engine) GUI Java GUI - Install Window builder to create GUI using Eclipse IDE Code Related No issues when you write static public void instead of public static void We can execute program without main method : using static bloc...

Hibernate

Hibernate is an ORM (Object Relational Mapping) tool which is primarily used in the data layer. Object Relational Mappings Problems There are several problems can occur when you are trying to save objects in the database from the scratch without using Hibernate. Mapping member variables to columns Mapping relationships Handling data types Managing changes to an object Set Up the Development Environment  Following steps are briefly pointed out how to set up Hibernate on your local machine. Download the hibernate jar files Create a project in Eclipse Right click on the project name and go to properties Navigate to libraries tab Add library and import jar files (lib-> JPA/required) Add Postgres JDBC driver as jar file Configurations After you set up the Hibernate you have to create hiberante.cfg.xml file and do some configurations like setup database details, entity class, etc. Dialect: Define what kind of language should use to talk...